22
วิธีใช้งาน Broadlink RM + SmartIR ใน Home Assistant เพื่อควบคุมเครื่องปรับอากาศ
ต้องยอมรับเลยว่าถ้าจะใช้งาน SmartIR ใน Home Assistant ก่อนหน้านี้ถือว่ามืดมนเลยก็ว่าได้ มักจะไปต่อกันไม่ถูก เพราะคนทำ SmartIR ก็ไม่ได้มี Document หรือ Tutorial ให้อ่านอย่างละเอียดว่าต้องตั้งค่าทำอะไรบ้างตั้งแต่ต้นจนจบ ซึ่งใน Github ก็บอกไว้แค่คร่าวๆมากและดูงงๆ กว่าจะใช้งานได้จริงๆก็เสียเวลาหาวิธีอยู่นาน หาใน Community บ้าง ใน YouTube บ้าง ลองงมลองเล่นเองและถามเพื่อนๆที่เคยเซ็ตไว้ได้ ก็เลยอยากเอามาเขียนสรุปไว้เผื่อจะเป็นประโยชน์กับใครที่ต้องการใช้งาน SmartIR ใน Home Assistant ครับ
โดยปกติแล้วถ้าหากเราใช้งาน Broadlink RM ใน Home Assistant สามารถทำได้โดยการ Learn IR codes เป็นการเรียนรู้คำสั่งจากรีโมทของเครื่องใช้ไฟฟ้าต่างๆ มาเก็บไว้ใน Home Assistant และสามารถเลือกคำสั่ง IR codes ที่ได้จากการ Learn มาสั่งงานเครื่องใช้ไฟฟ้าได้เลยตรงๆ ดูเหมือนจะง่ายใช่ไหมครับ แต่ในความเป็นจริงถ้าหากเป็นรีโมทของเครื่องปรับอากาศ(ต่อไปนี้ขอเรียกสั้นๆว่า แอร์) จะมีคำสั่งบรรจุอยู่ในนั้นเยอะมากๆ
ซึ่งหลักการทำงานของรีโมทแอร์ส่วนใหญ่จะมีการมัดรวมการตั้งค่าต่างๆหลายๆค่าไว้ในคำสั่งเดียว เช่น สั่งให้แอร์ ยี่ห้อ Daikin รุ่น FTE09NV25 มีอุณหภูมิที่ 25 องศา C กับความแรงลมที่ level 5 และ swing mode เปิดอยู่ในโหมด cool หรือ dry หรือบางรุ่นบางยี่ห้อในต่างประเทศอาจจะมีโหมด heat ด้วย สามารถทำหน้าที่เป็น heater ปรับให้อุณภูมิในห้องร้อนขึ้นได้เมื่อเจออากาศหนาวๆ
ใน 1 คำสั่งจะมัดรวมการตั้งค่าทุกอย่างไว้ใน IR codes เก็บข้อมูลไว้ใน Home Assistant ลักษณะแบบนี้ (ถ้าใครเป็น Dev จะเข้าใจว่ารูปแบบนี้คือ base64)
JgBMAadEDjgOFQ0VDRYNOQ0VDRYNFQ0WDTkNFQ05DTkNFg04DjgOOA44DjgOFQ0VDTkNFg0VDRYNFQ0WDRUNOQ05DTkNOQ05DRUOOA44DhUNFQ0WDRUNFg0VDRYNFQ0WDRUNFg0VDTkNOQ05DTkNFQ4VDRUOFQ0AA8WnRQ05DRUNFg0VDTkNFg0VDRYNFQ05DRUOOA44DhUNOQ05DTkNOQ05DRUNFg05DRUNFg0VDRYNFQ0VDhUNFQ4VDRUOOA44DhUNFQ05DRYNOQ05DTgOFQ0WDRUNOQ05DRUOFQ05DRUOFQ0VDjgNFg0VDRYNFQ0WDRUNFg0VDRYNFQ0WDRUNFg0VDRYNFQ0WDRUNFg0VDTkNOQ05DTkNFQ4VDRUNOQ44DTkNFg0VDRYNFQ0WDRUNFg0VDTkNFQ4VDRUOFQ0VDhUNOQ0VDTkNFg05DRUNAA0FAAAAAAAAAAAAAAAA
ถ้าหากเราตั้งอุณหภูมิแตกต่างกันไปตั้งแต่ 19-30 องศา C หรือ ความแรงลม ตั้งแต่ระดับ 1 - 5 หรือตั้งเป็น auto เท่านี้ลองคิดรวมๆกันจะต้องเก็บคำสั่งไว้เป็นร้อยๆคำสั่ง
แต่ถ้าหากเราต้องการสั่งงานให้ปรับแค่อุณหภูมิแอร์มาที่ 25 เท่านั้นปกติแล้วไม่สามารถทำได้ ต้องมาเลือกคำสั่งว่า 25 องศา C ที่ความแรงลมเท่าไร ในโหมดไหน cool หรือ dry ใช้ swing mode ด้วยไหม แบบนี้ดูจะใช้งานยากไปหน่อย
SmartIR ก็เป็นอีกหนึ่งตัวช่วยที่จะมาช่วยจัดการคำสั่งรีโมทแอร์ให้ใช้งานได้ง่ายขึ้น สามารถปรับอุณหภูมิหรือปรับแรงลมแยกกันได้สะดวก (เบื้องหลังก็คือจะไปหยิบคำสั่งที่เราเก็บไว้เป็นร้อยๆคำสั่งมาสั่งงานให้เรานั่นแหละครับ)
และนอกจากนั้น Home Assistant จะมองเครื่องปรับอากาศเครื่องที่เราเก็บคำสั่งไว้ เห็นเป็น entity หนึ่ง ไม่ได้มองเป็นคำสั่งร้อยๆชุดแบบเดิม
1.เพิ่ม Broadlink RM เข้ามาใน integrations ก่อน (รองรับ RM3,RM4 ทั้ง mini และไม่ mini)
2.มาที่ Developer Tools > Service เพื่อ Learn Command
3.เลือก Service เป็น Remote: Learn Command
ใส่ attribute ดังนี้
service: remote.learn_command
data:
device: air_conditioner
command: cool_1_19
target:
entity_id: remote.rm3_mini_remote
Data attribute | Description |
---|---|
service | remote.learn_command |
device | ใส่ชื่ออุปกรณ์หรือเครื่องใช้ไฟฟ้าที่จะรับคำสั่งเข้ามา |
command | ใส่ชื่อคำสั่ง ตัวอย่างเช่น ปรับแอร์มาที่ 19 องศา ความแรงลมคือ 1 ตั้งชื่อเป็น cool_1_19 (จะตั้งชื่อยังไงก็ได้ขอให้ตัวเองเข้าใจ) |
entity_id | ใส่ entity id ของ Boardlink |
4.คลิกปุ่ม CALL SERVICE จะมี Notification แจ้งเตือนใน Home Assistant และที่ Boardlink RM จะมีไฟ LED ติดอยู่
5.เอารีโมทชี้มาที่ Boardlink RM และกดปุ่มที่ต้องการ เมื่อ Learn สำเร็จแล้ว Notification จะหายไป และไฟ LED ที่ Broadlink RM ก็จะดับเช่นกัน
6.ทำขั้นตอนที่ 3-5 รับคำสั่งรีโมททุกคำสั่งให้ครบหรือจนกว่าจะพอใจ
7.ใช้ Visual Studio Code เปิดเข้ามายังโฟลเดอร์ /config/.storage/
(File > Open Folder)
จะมีไฟล์ที่ชื่อว่า broadlink_remote_xxxxx_codes ขึ้นมา ข้างในจะบรรจุคำสั่งที่เราเคยได้ Learn ไว้ มาถึงขั้นตอนนี้พักหายใจกันก่อน
- ติดตั้ง HACS ดูวิธีติดตั้งได้ใน Link นี้ https://hacs.xyz/docs/installation/installation/
- ติดตั้ง SmartIR ใน HACS ด้วยการเพิ่ม custom repository https://github.com/smartHomeHub/SmartIR
- หลังจากที่ติดตั้ง SmartIR แล้วให้เข้ามาดูรายชื่อเครื่องปรับอากาศว่ามีรุ่นที่ใช้งานอยู่ใน List นี้หรือไม่ https://github.com/smartHomeHub/SmartIR/blob/master/docs/CLIMATE.md
4.1 ถ้ามี ให้โหลดไฟล json จาก Github มาใช้ได้เลย ตามรุ่นเครื่องปรับอากาศที่เรามี มาใส่ไว้ในโฟลเดอร์ /config/custom_components/smartir/codes/climate
4.2 ถ้าไม่มีรุ่นแอร์ใน list ให้สร้างไฟล์ขึ้นมาใหม่ เช่น xxxx.json ไว้ในโฟลเดอร์ตามข้อ 4.1 โดยหาไฟล์ .json สักไฟล์จาก link ในข้อ 3 มาเป็นต้นแบบ
อยากให้ลองศึกษารูปแบบของค่าต่างๆในไฟล์ดูนะครับ(ไม่ขออธิบายตรงนี้ละกันครับน่าจะยาว) แล้วแทนที่ IR codes ที่เราได้ Learn ไว้แล้ว (จากไฟล์ broadlink_remote_xxxxx_codes)
หมายเหตุ: การตั้งชื่อไฟล์ xxxx.json จะใช้เป็น code ตัวเลข 4 ตัว (และจะต้องไม่ซ้ำกับที่มีอยู่แล้ว ถ้าหากเราจะ contribute เพิ่มคำสั่งแอร์ของเราไว้ใน Github ด้วย)
5.เพิ่ม smartir: และ climate: ในไฟล์ configuration.yaml
smartir:
climate:
- platform: smartir
name: Daikin AC
unique_id: daikin_ac
device_code: 1111
controller_data: remote.rm3_mini_remote
temperature_sensor: sensor.0x00124b00226b2946_temperature
humidity_sensor: sensor.0x00124b00226b2946_humidity
Data attribute | Description |
---|---|
name | ให้ตั้งชื่อแอร์ |
unique_id | unique_id อันนี้จะเป็น entity ของแอร์ |
device_code | ใส่ code ตามชื่อไฟล์ในข้อ 4 |
controller_data | ใส่ entity id ของ Boardlink |
temperature_sensor | (ถ้ามี) sensor อุณหภูมิก็ใส่ entity id ของ sensor ด้วย |
humidity_sensor | (ถ้ามี) sensor ความชื้นก็ใส่ entity id ของ sensor ด้วย |
22