จากบทความที่แล้วเกี่ยวกับการ Integration Openmediavault เข้ามาใช้งานที่ Home Assistant ( อ่านเพิ่มเติม ) จะเห็นว่ามันไม่มีข้อมูลของ CPU Temperature ซึ่งในบทความนี้ ผมจะมาแนะนำวิธีการใช้ Python script เพื่อจะดึงข้อมูล CPU Temp ไปแสดงผลที่ Home Assistant โดยจะเป็นการ run Python script บนเครื่อง Openmediavault โน๊ตบุ๊คเก่า ( อ่านเพิ่มเติม )

** วิธีนี้สามารถนำไปประยุกต์ใช้กับ server linux อื่นๆได้ด้วยนะ*

เตรียมพร้อม Home Assistant

  1. เปิดใช้ Rest API แก้ไข configuration.yaml ( อ่านเพิ่มเติม )

    Example configuration.yaml entry

    api:

  2. ทำการสร้าง input_number และ sensors แก้ไข configuration.yaml เสร็จแล้ว Restart

    Example configuration.yaml entry

    input_number: cpu_temp: min: 0 max: 200000

    sensors: cpu_temp: unit_of_measurement: ‘°C’ value_template: ‘{{ states(“input_number.cpu_temp”) | multiply(0.001) | round(1) }}’

  3. สร้าง Long-Lived Access Tokens โดนเข้าไปที่ Profile ของเรา หลังจากสร้างแล้วอย่าลืม copy token เก็บไว้นะ ติดตั้ง Python script

  4. SSH เข้าไปเครื่อง Openmediavault จากนั้น ทดสอบเรียก CPU Temp

    cat /sys/class/thermal/thermal_zone0/temp

  5. ทำการติดตั้ง Python และทำการ Verify เพื่อให้มั่นใจว่า Python พร้อมใช้งาน

    sudo apt-get install python3-pip pip3 –version

  6. สร้าง Python script

    sudo nano update_temp.py

    #!/usr/bin/env python3

    import subprocess from requests import post

    temp=subprocess.check_output(“cat /sys/class/thermal/thermal_zone0/temp”, shell=True) temp = [int(i) for i in temp.split() if i.isdigit()][0]

    url = “ http://192.168.x.xxx:8123/api/states/input_number.cpu_temp"

    headers = { “Authorization”: “Bearer TOKEN”, “content-type”: “application/json” }

    data = ‘{“state”: %s}’ % temp post(url, headers=headers, data=data, verify=False)

  • url ต้องแก้เป็น ip ของ Home Assistant ของเรานะ
  • Authorization ตรงส่วนของ TOKEN แก้เป็น Long-Lived Access Tokens ตอนที่สร้างไว้ข้างบน
  1. เปลี่ยน Permission ของไฟล์ update_temp.py

    sudo chmod +x update_temp.py

  2. ทดสอบ run Python script

    sudo ./update_temp.py

  3. ทำการตั้งค่า crontab เพื่อจะอัพเดท script ทุกๆนาที

            • /root/update_temp.py

หรือจะใช้งานผ่านทาง scheduled job Openmediavault ก็ได้เหมือนกัน เพียงแค่นี้ เราก็สามารถ monitor CPU Temperature จากเครื่อง Openmediavault หรือ server linux ตัวอื่นๆ โดยการเข้าไปเพิ่ม card เพื่อเรียกใช้งาน sensor cpu_temp ได้เลย