ลืมปิดแอร์ไม่เป็นไร เดี๋ยว Node-RED ปิดแอร์ให้ ใน Home Assistant
Tags: nodered, hassio, homeassistant
Published: 2021-06-19 21:13:07

![Full Node-RED Workflow](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/cdujw4cub5acb6k03v0u.png)
 
ก่อนที่จะสร้าง Node-RED Workflow มาทำความเข้าใจในส่วนของการ tracking กันก่อนครับ ใน Home Assistant ถ้าต้องการจะ tracking ว่าสมาชิกในบ้านคนนี้ อยู่บ้านหรือไม่ สามารถ tracking ได้หลายๆทางเพื่อความแม่นยำ โดยสามารถเข้าไปเซ็ตได้ใน Configuration > People จะมีให้ใส่ device สำหรับการ tracking

![Screen Shot 2564-06-20 at 01.49.31](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ryi5qs7yyfk0cb66bthi.png) 

![Screen Shot 2564-06-20 at 01.52.34](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/1fda6kya0jtf1yeatjdf.png)
ซึ่งผมได้ tracking จาก 2 ทางคือ
- Entity จากแอพ Home Assistant ในมือถือ โดยจะเช็คจาก Location ล่าสุด ว่าอยู่ในบริเวณบ้าน หรือ ออกนอกบริเวณบ้านไปแล้ว
- และเนื่องจาก MikroTik integration สามารถดึง Entity ของอุปกรณ์มือถือที่เชื่อมต่อใน Network มาได้ จะทำให้เราเช็คได้ว่า ถ้ามือถือเครื่องนี้ต่อ Wifi อยู่แสดงว่าอยู่บ้าน 

(จริงๆแค่ track จาก Location ใน App มือถืออันเดียวก็เพียงพอแล้ว แค่ผมเอา entity จาก MikroTik มา track เพิ่มเพื่อความแม่นยำ)

__มาสร้าง Node-RED Workflow กันเลยดีกว่าครับ__
![Node-RED 1](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/pusfn6czgh7m4k06jt54.png)

1.เริ่มจากสร้าง events: state มาเช็ค state ของ person ที่ต้องการติดตาม ดูว่าถ้าไม่อยู่บ้าน (not_home) ก็ให้ทำ Node ถัดไป
![Node 1](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/19e75vp70cv3n0f3lk9h.png)

2.เพิ่ม delay หน่วงเวลาไป 1 ชั่วโมง
![Node 2](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/201hiotvnkjbbszdo7ti.png)
จะตั้งเวลาเท่าไรนั้น ขึ้นอยู่กับความเหมาะสมครับ เช่นอย่างของผมตั้งเวลาไว้เผื่อเดินไปเซเว่นใกล้บ้านแล้วกลับมาไม่เกิน 1 ชั่วโมง 

3.หลังจาก ครบ 1 ชั่วโมงแล้ว เช็ค current state ดูว่าถ้าหาก state ยังขึ้นเป็น not_home ก็ให้ทำ Node ถัดไป
![Node 3](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/43dlazk9xmpo6a5ayhmt.png)

![Node-RED 2](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/f9zh3cmki5fgp1a1wyhp.png)

4.หลังจากนั้นเช็ค current state ของแอร์ว่ายังเปิดอยู่ไหม ถ้าแอร์ยังเปิดอยู่ก็ให้ทำ Node ถัดไป
![Screen Shot 2564-06-20 at 03.13.39](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/1ud1wajx7puqvlsjjub7.png)

5.หลังจากเช็คว่าถ้าแอร์ยังเปิดอยู่ ก็ทำการ call service สั่งให้ปิดแอร์ 
![Screen Shot 2564-06-20 at 03.16.17](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/zemf5mppe5jyn8zbk8m6.png)

6.ทำการ call service notify เพื่อทำการแจ้งเตือนในแอพ Home Assistant ว่า "ดำเนินการปิดแอร์ให้แล้วเนื่องจากคุณลืมปิดแอร์"
(ขั้นตอนนี้อาจจะปรับเปลี่ยนไปใช้เป็น LINE Notify หรือ Notify อื่นๆก็ได้นะครับ)
![call service notify](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/lbwgih3o3wj8xbhpw9mm.png)

ตัวอย่าง Data สำหรับ notify 
![JSON Data](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/41p1m5huxe4px60xxadd.png)

ดูข้อมูลเพิ่มเติมสำหรับการส่ง notify ได้ที่ 
https://www.home-assistant.io/integrations/notify/

หลังจากนี้เมื่อออกจากบ้านและลืมปิดแอร์ภายใน 1 ชั่วโมงก็จะมี Notification แจ้งเตือนในมือถือและ Node-RED ก็จะสั่งปิดแอร์ให้เราอัตโนมัติ

หน้าตา Notification จากแอพ Home Assistant ในมือถือ
![Notification](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/jvwdhxjx7brzqpaltp8h.png)