โปรเจกต์งานอดิเรก → บ้านระบายความร้อนให้ดิสก์ของตัวเอง
คู่มือ · Home Assistant · ใช้งานตั้งแต่ปี 2026 ในคอนโดกรุงเทพฯ

สอนบ้านให้ระบายความร้อนให้ฮาร์ดดิสก์ของตัวเอง

NAS ที่เต็มไปด้วยดิสก์จานหมุนกับอากาศเขตร้อนเป็นคู่ที่ไม่ดีในหน้าร้อน ตู้เซิร์ฟเวอร์ของเราไม่มีระบบทำความเย็นเฉพาะ — แต่ห้องที่ตู้ตั้งอยู่ติดกันมีแอร์ที่บ้านควบคุมได้อยู่แล้ว คู่มือนี้เชื่อมทั้งสองเข้าด้วยกันใน Home Assistant: เมื่อดิสก์ที่ร้อนที่สุดเกินเส้น แอร์จะเปิดและทำให้มันเย็นลง แล้วทุกอย่างกลับสู่ปกติ ไม่ต้องใช้ฮาร์ดแวร์ใหม่ เซนเซอร์หนึ่งตัวและออโตเมชันสองตัว

แนวทาง ก่อนดูโค้ด

นี่คือเทอร์โมสแตตที่คุณสร้างเอง และทุกชิ้นใช้กับปัญหาอื่นได้ (พัดลมโรงเรือนต้นไม้ เราเตอร์ในตู้ร้อน ๆ) ไอเดียสี่ข้อทำงานทั้งหมด:

ดูกรณีที่แย่ที่สุด ไม่ใช่ค่าเฉลี่ย ดิสก์เสียทีละลูก สัญญาณที่ต้องดูจึงเป็นดิสก์ที่ร้อนที่สุด ไม่ใช่ค่าเฉลี่ย เซนเซอร์เทมเพลตหนึ่งตัวย่อดิสก์ทั้งหมดที่คุณมีให้เหลือตัวเลขเดียว

เปิดเมื่อเกินเส้นหนึ่ง ปิดเมื่อต่ำกว่าอีกเส้นที่ต่ำกว่า ถ้าใช้เกณฑ์เดียวกันทั้งเริ่มและหยุดการทำความเย็น ระบบจะเปิดปิดสลับไปมารอบเกณฑ์นั้น ช่องห่างสององศา — เปิดที่ 55°C ปล่อยที่ 53°C — ทำให้มันตัดสินใจเด็ดขาด

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

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

สิ่งที่ต้องมี

ขั้นที่ 1 — ตัวเลขเดียวสำหรับ “ดิสก์ร้อนแค่ไหน”

เซนเซอร์เทมเพลตที่ใช้ค่าสูงสุดจากเซนเซอร์อุณหภูมิดิสก์ทั้งหมดของคุณ ใส่เอนทิตีของคุณเอง ดิสก์ที่หยุดหมุนหรือไม่พร้อมใช้งานจะถูกข้ามไปเฉย ๆ
configuration.yaml (หรือไฟล์แพ็กเกจ)
template:
  - sensor:
      - name: "NAS max disk temp"
        unique_id: nas_max_disk_temp
        unit_of_measurement: "°C"
        state: >
          {{ [ states('sensor.disk1_temp'),
               states('sensor.disk2_temp'),
               states('sensor.disk3_temp') ]
             | map('float', default=0) | max | round(0) }}
สร้างสวิตช์ช่วยด้วย: Settings → Devices & Services → Helpers → Toggle ตั้งชื่อว่า input_boolean.drive_cooling_active มันคือความจำของระบบว่าตัวมันเองเป็นผู้เปิดแอร์หรือไม่

ขั้นที่ 2 — ออโตเมชันที่ทำความเย็น

ทำงานเมื่อดิสก์ที่ร้อนที่สุดเกิน 55°C: ตั้งแอร์ให้เย็นจริงจัง ยกธง และส่งข้อความเตือนล่วงหน้า ตัวกระตุ้นที่สองที่ 60°C คือสัญญาณเตือน “วิธีนี้ไม่ได้ผล”
ออโตเมชัน (มุมมอง YAML)
alias: Drives hot - cool the room
triggers:
  - trigger: numeric_state
    entity_id: sensor.nas_max_disk_temp
    above: 55
    id: hot
  - trigger: numeric_state
    entity_id: sensor.nas_max_disk_temp
    above: 60
    id: very_hot
actions:
  - choose:
      - conditions: [{ condition: trigger, id: hot }]
        sequence:
          - action: climate.set_temperature
            target: { entity_id: climate.living_room_ac }
            data: { temperature: 23, hvac_mode: cool }
          - action: climate.set_fan_mode
            target: { entity_id: climate.living_room_ac }
            data: { fan_mode: high }
          - action: input_boolean.turn_on
            target: { entity_id: input_boolean.drive_cooling_active }
          - action: notify.mobile_app_phone
            data: { message: "Drives at {{ states('sensor.nas_max_disk_temp') }} C - aircon on." }
      - conditions: [{ condition: trigger, id: very_hot }]
        sequence:
          - action: notify.mobile_app_phone
            data: { message: "Drives still climbing: {{ states('sensor.nas_max_disk_temp') }} C. Check the NAS." }
mode: single

ขั้นที่ 3 — ออโตเมชันที่ปล่อยมือ

ต่ำกว่า 53°C — สังเกตช่องห่างที่ตั้งใจไว้ — แอร์จะถูกปล่อย แต่เฉพาะเมื่อธงบอกว่าระบบนี้เป็นผู้เปิด ตัวกระตุ้นที่สองจับกรณีติดค้าง: ทำความเย็นอยู่ 30 นาทีแปลว่ามีอะไรที่ต้องให้คนดู
ออโตเมชัน (มุมมอง YAML)
alias: Drives cool - release the aircon
triggers:
  - trigger: numeric_state
    entity_id: sensor.nas_max_disk_temp
    below: 53
    id: cooled
  - trigger: state
    entity_id: input_boolean.drive_cooling_active
    to: "on"
    for: "00:30:00"
    id: stuck
conditions:
  - condition: state
    entity_id: input_boolean.drive_cooling_active
    state: "on"
actions:
  - choose:
      - conditions: [{ condition: trigger, id: cooled }]
        sequence:
          - action: climate.turn_off
            target: { entity_id: climate.living_room_ac }
          - action: input_boolean.turn_off
            target: { entity_id: input_boolean.drive_cooling_active }
          - action: notify.mobile_app_phone
            data: { message: "Drives back to {{ states('sensor.nas_max_disk_temp') }} C - aircon released." }
      - conditions: [{ condition: trigger, id: stuck }]
        sequence:
          - action: notify.mobile_app_phone
            data: { message: "Drive cooling has run 30 minutes without winning - worth a look." }
mode: single

บันทึกการปรับจูนจากหน้าร้อนตลอดหนึ่งปี

เลือกเกณฑ์จากดิสก์ของคุณ ไม่ใช่ของเรา ดิสก์จานหมุนส่วนใหญ่ทนได้ถึง 60°C หรือ 65°C เราเลือก 55 เป็นเส้นลงมือเพื่อให้การตอบสนองเริ่มก่อนถึงพิกัดนาน ๆ และช่องห่างลงไปที่ 53 กันการเปิดปิดสลับไปมา

นับเฉพาะดิสก์ที่สำคัญ SSD รายงานตัวเลขที่ดูน่าตกใจได้อย่างสบาย ๆ ของเราถูกแยกออกจากเซนเซอร์ค่าสูงสุด ซึ่งดูเฉพาะดิสก์จานหมุนเท่านั้น

สัญญาณเตือนกรณีติดค้างคุ้มค่าจริง ประตูที่ปิดไว้ งานคัดลอกหนัก ๆ พัดลมที่กำลังเสีย — กรณีที่การทำความเย็นไม่มีทางชนะ คือกรณีที่คุณอยากรู้ภายในครึ่งชั่วโมงพอดี ไม่ใช่ตอนจะเข้านอน

โครงเดียวกัน — เซนเซอร์กรณีแย่ที่สุด สองเส้นที่มีช่องห่าง ธงความจำ และการยกระดับ — ใช้ซ้ำได้กับเกือบทุกอย่างที่คุณวัดได้และมีสิ่งหนึ่งที่สั่งเปิดปิดได้