จากบทความที่แล้วเกี่ยวกับการ Integration Openmediavault เข้ามาใช้งานที่ Home Assistant ( อ่านเพิ่มเติม ) จะเห็นว่ามันไม่มีข้อมูลของ CPU Temperature ซึ่งในบทความนี้ ผมจะมาแนะนำวิธีการใช้ Python script เพื่อจะดึงข้อมูล CPU Temp ไปแสดงผลที่ Home Assistant โดยจะเป็นการ run Python script บนเครื่อง Openmediavault โน๊ตบุ๊คเก่า ( อ่านเพิ่มเติม )
** วิธีนี้สามารถนำไปประยุกต์ใช้กับ server linux อื่นๆได้ด้วยนะ*
เตรียมพร้อม Home Assistant
เปิดใช้ Rest API แก้ไข configuration.yaml ( อ่านเพิ่มเติม )
Example configuration.yaml entry
api:
ทำการสร้าง 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) }}’
สร้าง Long-Lived Access Tokens โดนเข้าไปที่ Profile ของเรา หลังจากสร้างแล้วอย่าลืม copy token เก็บไว้นะ
ติดตั้ง Python script
SSH เข้าไปเครื่อง Openmediavault จากนั้น ทดสอบเรียก CPU Temp
cat /sys/class/thermal/thermal_zone0/temp
ทำการติดตั้ง Python และทำการ Verify เพื่อให้มั่นใจว่า Python พร้อมใช้งาน
sudo apt-get install python3-pip pip3 –version
สร้าง 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 ตอนที่สร้างไว้ข้างบน
เปลี่ยน Permission ของไฟล์ update_temp.py
sudo chmod +x update_temp.py
ทดสอบ run Python script
sudo ./update_temp.py
ทำการตั้งค่า crontab เพื่อจะอัพเดท script ทุกๆนาที
- /root/update_temp.py
หรือจะใช้งานผ่านทาง scheduled job Openmediavault ก็ได้เหมือนกัน
เพียงแค่นี้ เราก็สามารถ monitor CPU Temperature จากเครื่อง Openmediavault หรือ server linux ตัวอื่นๆ โดยการเข้าไปเพิ่ม card เพื่อเรียกใช้งาน sensor cpu_temp ได้เลย