Tuesday, October 24, 2017

How to schedule Power On/Off Raspberry Pi

วิธีตั้งเวลา Power On/Off Raspberry Pi
   เรื่อง Shutdown หรือ Wakeup Raspberry Pi หลายคนคงค้นเจอเยอะแล้ว แต่นี่น่าจะเป็นการ Power On และ Power Off ที่ค่อนข้างตรงความหมายจริง ๆ คือ จ่ายและหยุดจ่ายไฟ

วงจรการทำงาน
  ณ จุด ๆ นี้ ขอบอกเลยว่า เราเน้นที่การตั้งเวลา Power On และ Power Off ไม่ได้คำนึงในแง่ของการประหยัดไฟ ดังนั้นเราจะใช้อุปกรณ์มาควบคุมการจ่ายไฟเพิ่มนั่นก็คือ Sonoff นั่นเอง ตามรูป

หลักการทำงาน
Shutdown :
1.ตั้ง crontab ที่ Raspberry Pi ให้ shutdown ตามเวลาที่ต้อง
sudo crontab -e
0 18 * * 1,2,3,4,5,6 /sbin/shutdown -h now

Power Off/On :
2.Setup MQTT Broker ตามตัวอย่าง http://www.komkid.net/2017/10/mqtt.html

3.โปรแกรม Sonoff ให้เป็น MQTT Client ซึ่งมีหลายวิธี แต่ทำตามตัวอย่างนี้ ก็สะดวกดี https://github.com/arendst/Sonoff-Tasmota โดย setup ให้ subscribe ไปที่ topic ชื่อ raspberrypi

4.ตั้ง crontab ที่ broker หรือที่ MQTT Client ก็ได้ให้ publish ไปที่ topic ที่ว่า เช่น
3 18 * * * mosquitto_pub -h 127.0.0.1 -t "cmnd/raspberrypi/power" -m "0"
0 8 * * * mosquitto_pub -h 127.0.0.1 -t "cmnd/raspberrypi/power" -m "1"
คือ ตั้งเวลาให้ Sonoff หยุดจ่ายไฟหลังจาก Shutdown แล้ว และตั้งเวลาให้จ่ายไฟเพื่อเปิดเครื่อง ตอน 8.00 น.
5.หรือเช็คว่า Pi ปิดไปแล้วหรือยังก่อนตัดไฟโดยให้ crontab เรียก Ping จาก shell script เพื่อตรวจสอบแทนที่จะส่งข้อความให้ปิดไปที่ broker เลย
ping -w 3 IP_ADDRESS
RETVAL=$?
if [ $RETVAL -ne 0 ]; then
    echo 'Shutting down'
    mosquitto_pub -t "cmnd/raspberrypi/power" -m "0"    
else
    echo 'Pi3C is running!'
fi


No comments: