วิธีใช้งาน 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 หนึ่ง ไม่ได้มองเป็นคำสั่งร้อยๆชุดแบบเดิม

วิธีการเพิ่ม Broadlink RM ใน HA และการ Learn Command

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 ติดอยู่

Screen Shot 2564-06-19 at 03.54.32

5.เอารีโมทชี้มาที่ Boardlink RM และกดปุ่มที่ต้องการ เมื่อ Learn สำเร็จแล้ว Notification จะหายไป และไฟ LED ที่ Broadlink RM ก็จะดับเช่นกัน
RM3 Mini LED Off
6.ทำขั้นตอนที่ 3-5 รับคำสั่งรีโมททุกคำสั่งให้ครบหรือจนกว่าจะพอใจ

7.ใช้ Visual Studio Code เปิดเข้ามายังโฟลเดอร์ /config/.storage/
(File > Open Folder)
จะมีไฟล์ที่ชื่อว่า broadlink_remote_xxxxx_codes ขึ้นมา ข้างในจะบรรจุคำสั่งที่เราเคยได้ Learn ไว้ มาถึงขั้นตอนนี้พักหายใจกันก่อน
Screen Shot 2564-06-19 at 01.04.58

ติดตั้งและใช้งาน SmartIR

  1. ติดตั้ง HACS ดูวิธีติดตั้งได้ใน Link นี้ https://hacs.xyz/docs/installation/installation/
  2. ติดตั้ง SmartIR ใน HACS ด้วยการเพิ่ม custom repository https://github.com/smartHomeHub/SmartIR
  3. หลังจากที่ติดตั้ง 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 ด้วย

6.สุดท้ายลองสร้าง Lovelace ในแบบ Thermostat Card ใส่ entity ของแอร์ที่เคยตั้งค่า unique_id ไว้ในข้อ 5 จะได้เป็น climate.daikin_ac
ลองสั่งคำสั่งแอร์เปลี่ยนอุณหภูมิปรับแรงลม ถ้าแอร์มีการตอบสนองถือว่าสำเร็จแล้วครับ
Screen Shot 2564-06-19 at 05.23.11

22