มาทำให้ Mi Air Purifier สั่งงานผ่าน Siri (Apple HomeKit) ได้กันเถอะ

ในช่วงที่บ้านเรามีฝุ่นควัน PM 2.5 หนักมาก เครื่องฟอกอากาศก็เลยขายดีเป็นเทน้ำเทท่า โดยเฉพาะเจ้าตัวเครื่องฟอก Mi Air Purifier 2S…

มาทำให้ Mi Air Purifier สั่งงานผ่าน Siri (Apple HomeKit) ได้กันเถอะ

ในช่วงที่บ้านเรามีฝุ่นควัน PM 2.5 หนักมาก เครื่องฟอกอากาศก็เลยขายดีเป็นเทน้ำเทท่า โดยเฉพาะเจ้าตัวเครื่องฟอก Mi Air Purifier 2S ที่มีรีวิวอย่างล้นหลามว่าราคาเป็นมิตร และใช้งานได้ดี ซึ่งกว่าจะได้มาใช้สักเครื่อง น้องฝุ่นก็จะไปหมดแล้ว แต่ก็เชื่อว่าปีหน้าน้องก็คงมาหาเราใหม่อีก ซื้อเตรียมพร้อมเอาไว้ก่อนคงไม่เสียดาย หลังจากได้เครื่องมาไม่นาน ใช้ๆไปรู้สึกว่าการต้องเปิดแอพ Mi Home ทุกครั้งที่จะสั่งงานมันช่างวุ่นวายเหลือเกิน ถ้าเราสั่ง Siri หรือกดจาก Control Center ได้คงจะดีไม่เบา

สำหรับผู้ใช้ iOS การสั่งงานอุปกรณ์ IoT ผ่าน Siri หรือกดสั่งจาก Control Center นั้น เราต้องเพิ่มอุปกรณ์ไปในแอพ Home ของ Apple ก่อน ซึ่งอุปกรณ์ที่รองรับอย่างเป็นทางการจาก Apple เองนั้น (มีขายในบ้านเรา)ค่อนข้างน้อย ที่เห็นว่ามีขายก็อยู่ก็พวก หลอดไฟสี Philips Hue, กล้องวงจรปิด D-Link เป็นต้น ถ้าเป็นเครื่องฟออกก็จะมีของ Coway แต่เป็นรุ่นที่ไม่เข้าไทย แต่วันนี้เรามีเครื่องฟอก Mi Air Purifier เราก็จะของเราให้เข้าไปในนั้นได้เหมือนกัน

ถ้าทำตามสำเร็จก็จะสามารถทำได้ทุกอย่างแบบรูปข้างล่างเลย

① หน้าแอพ Home ② การสั่งงานผ่าน Siri ③ ควบคุมผ่านหน้า Control Center ④ การตั้งค่าอุปกรณ์

ทำอะไรได้บ้าง

ฟังก์ชั่นหลักๆที่สามารถทำได้คือ

  1. เปิดปิดเครื่องฟอก
  2. เปลี่ยนโหมด Manual / Auto / Sleep (Silent)
  3. ปรับความแรงพัดลม (ปรับได้ต่อเมื่อเปิดโหมด Manual เท่านั้น)
  4. แสดงผล อุณหภูมิ, ความชื้น, คุณภาพของอากาศ
  5. แสดงค่าของไส้กรองอากาศ
  6. เปิดปิดหน้าจอเครื่อง ที่กลางคืนยังไงก็แยงตา
  7. เปิดปิดเสียงเตือนเครื่อง
  8. เปิดปิดโหมด Child Lock

ข้อดีของการเอาเข้ามาอยู่ในแอพ Home

พอมาอยู่ในแอพ Home ก็จะสามารถทำให้เราสั่งคำสั่ง หรือ ถามค่าข้างบนผ่าน Siri ได้ทั้งหมด เราสามารถแบ่งห้อง แชร์การเข้าถึงอุปกรณ์ หรือสร้าง Scene ให้บ้านเราได้อย่างง่ายดาย อย่างผมจะสร้าง Scene ชื่อ Good Night เอาไว้ ก่อนนอนแค่บอกว่า Hey Siri, Good Night ไฟในห้องก็จะปิดลง และปรับเครื่องฟอกอากาศให้เป็น Sleep Mode และปิดหน้าจอมันซะ ทำให้ไม่รบกวนการนอนของเรา

* ข้อจำกัดของแอพ Home คือสามารถควบคุมอุปกรณ์ได้ก็ต่อเมื่ออยู่ใน Wi-Fi / LAN วงเดียวกันเท่านั้น ถ้าจะควบคุมผ่าน 4G หรือ Wi-Fi นอกบ้านต้องมี Apple TV หรือ iPad เพื่อเป็น Home Hub ทิ้งไว้ที่บ้านอีก 1 ตัว ซึ่งไม่ขออธิบายในนี้ครับ

อุปกรณ์ที่ต้องใช้

  1. เครื่องฟอกอากาศ Mi Air Purifier รุ่นที่รองรับจะมี 1, 2, 2S, Pro เท่าน้ัน Max ยังไม่รองรับ* (ผมใช้รุ่น 2S)
  2. อุปกรณ์ iOS (iPhone/iPad) ที่เป็น iOS 11 ขึ้นไป
  3. อุปกรณ์ Android (มือถือ/แท็บเล็ต) หรือใช้ Android Virtual Machine (Bluestack/Genymotion) ก็ได้
  4. Server สำหรับ Homebridge (ต้องเปิดตลอดเวลา) — ใช้เป็นคอมพิวเตอร์ หรือ Raspberry Pi ก็ได้ หรือถ้าใครมี NAS ที่รัน Docker ได้ก็สามารถใช้ได้เหมือนกัน (ผมใช้ Pi 3 Model B+)

หลักการทำงานคร่าวๆ

พระเอกของเราคือ Homebridge นี่แหละ, Homebridge จะเป็น server ที่เชื่อมระหว่างอุปกรณ์ iOS กับ เครื่องฟอกอากาศของเรา โดยจะจำลอง HomeKit API เพื่อให้อุปกรณ์ iOS สามารถมองเห็นและสั่งงานเครื่องฟอกอากาศได้ โดยจะสั่งงานมาที่ Homebridge Server ก่อน แล้ว Homebridge Server ก็จะสั่งงานต่อไปที่เครื่องฟอกอากาศของเราอีกทีนึง

เริ่มต้นกันเลย — หา Token ของเครื่องฟอก

อย่างแรกเราต้องมี Token ของ Mi Air Purifier ก่อน วิธีที่ทำได้จริงหลังจากทดลองมาหลายวิธีแล้ว วิธีที่ง่ายที่สุดก็คือ ลงแอพ Mi Home เวอร์ชั่น 5.4.49 ในอุปกรณ์ Android หรือ Android Virtual Machine เราจะต้องยินยอมให้ลงแอพจากนอก Play Store เพื่อให้ลงแอพได้ แล้ว Login แอพโดยใช้ User ที่เราผูกกับตัวเครื่องฟอกไว้ก่อนหน้านี้แล้ว อย่าลืมตั้ง Region ให้ตรงกับของเดิมที่ใช้งานได้ปกติด้วยนะครับ ไม่งั้นเดี๋ยวไม่เจอ จากนั้นลองกดเข้าไปเพื่อควบคุมเครื่องฟอก เพื่อให้แอพ Initialize อุปกรณ์นั้น ทดลองเปิดปิดเครื่องฟอกผ่านแอพสักหน่อยเพื่อให้แน่ใจว่าใช้ได้จริงๆ

เสร็จแล้วออกจากแอพ Mi Home แล้วไปที่ตัวจัดการไฟล์ เลื่อนไปที่โฟลเดอร์ Smarthome/logs จะมีไฟล์เป็น “วันที่”.txt เช่น 2019–02–08.txt ไฟล์จะเป็น Text ยาวมาก ให้เราเปิดไฟล์แล้ว search คำว่า token จะเจอ token ที่เป็นตัวเลขกับตัวอักษร 32 ตัว เลื่อนไปอีกหน่อยจะเจอ localip ให้จดสองค่านี้ไว้เพื่อเอาไปตั้งค่า Homebridge ต่อไป

2019–02–08.txt

ตัว Token นี่จะถูก Reset ทุกครั้งเมื่อเรา Reset เครื่องฟอก (กดปุ่มเปิด+ปุ่มหลังเครื่องแช่ไว้สักพัก) หรือเอาเครื่องฟอกไปผูกกับแอพ Mi Home ใหม่ (กด Add New Device) ถ้าตัว Token ถูก Reset เราจะต้องมาทำขั้นตอนข้างบนใหม่นะครับ ส่วน local ip ส่วนมากจะไม่เปลี่ยน ยกเว้นเราเปลี่ยน Router ที่บ้าน เราสามารถไปเช็คได้ว่า DHCP แจก ip อะไรให้เครื่องฟอก แล้วมาเปลี่ยนค่าใน Config ทีหลังได้

ขั้นตอนที่ 2 — ลง ​Homebridge บน Raspberry Pi

ถ้าใช้ Raspbian มาตรฐานอยู่แล้วก็ลงตามนี้ได้เลย เริ่มด้วยการอัพเดทระบบก่อน เปิด Terminal แล้วก๊อปโค๊ดไปแปะแล้วกด Enter ได้เลยsudo apt-get update
sudo apt-get upgrade

จากนั้นลง Node.js เวอร์ชั่น 8 หรือสูงกว่า (ถ้ามีอยู่แล้วข้ามไปได้เลยครับ)curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
sudo apt-get install -y nodejs

ลง Avahi และ dependencies อื่นๆ (ถ้ามีอยู่แล้วข้ามไปได้เลยครับ)sudo apt-get install libavahi-compat-libdnssd-dev

ลง Homebridge

sudo npm install -g --unsafe-perm homebridge

ขั้นตอนการลง Homebridge อย่างละเอียด

ขั้นตอนที่ 3 — ลงส่วนเสริม Mi Air Purifier สำหรับ Homebridge

ลงส่วนเสริม Mi Air Purifier สำหรับ Homebridge

sudo npm install -g homebridge-mi-airpurifier

ตั้งค่า config.jsonnano ~/.homebridge/config.json

แก้ type , ip ,token แล้วเอาไปวางใน config.json เราสามารถเปลี่ยนชื่อเครื่องฟอกและเปิดปิดฟังก์ชั่นต่างๆที่จะให้แสดงใน Home App ในนี้ได้ด้วย

type ที่เปลี่ยนได้จะมี MiAirPurifier , MiAirPurifier2 ,MiAirPurifier2S , MiAirPurifierPro

จากนั้นกด Ctrl+O แล้ว Enter เพื่อ Save กด Ctrl+X เพื่อออก

ขั้นตอนการลงส่วนเสริม Mi Air Purifier อย่างละเอียด

ขั้นตอนที่ 4 — รัน Homebridge และลองเล่นกันเลยhomebridge . &

เมื่อรันโค๊ดข้างบน จะมี QR Code แสดงขึ้นมาบนหน้า Terminal ให้เราเปิดแอพ Home ขึ้นมา กดเครื่องหมายบวกที่มุมขวาบน เลือก Add Accessory แล้วเอามือถือไปยิง QR Code ได้เลย แอพจะเตือนว่า Uncertified Accessory ให้กด Add Anyway ไป จากนั้นเครื่องฟอกอากาศของเราก็พร้อมใช้งานผ่านแอพ Home แล้ว

ถ้าใช้งานได้แล้ว เราสามารถไปตั้งค่าให้ homebridge รันตัวเองอัตโนมัติ เผื่อไฟดับแล้ว Raspberry Pi มันบูตขึ้นมาเองจะได้ไม่ต้องมาเปิดรันเองครับ วิธีทำ

เพิ่มเติมสำหรับเครื่องฟอกบางรุ่น

สำหรับคนที่ใช้ Mi Air Purifier Pro, ตัวนี้ยังมีปัญหาเรื่องการปรับพัดลม เห็นว่ามี Issue ใน Github และเปิด Pull Request ไว้แล้วแต่ยังไม่ได้ตอบรับ ถ้าสามารถก็แก้เอาไปก่อนได้ครับ วิธีตามนี้เลย

สำหรับคนที่ใช้ Mi Air Purifier Max, สามารถลองทำได้ เลือกเป็นMiAirPurifier2S แต่อาจใช้ได้ไม่ครบทุกฟังก์ชั่นครับ อ้างอิง

เพิ่มเติมสำหรับคนที่สนใจพัฒนาต่อ

จริงๆมีส่วนเสริม Mi Air Purifier อันนี้อีกอัน มีดาวเยอะกว่า แต่ทำได้น้อยกว่า อัพเดทล่าสุดเมื่อนานมาแล้ว จึงเลือกของ YinHangCode มาใช้แทน ใครอยากลองก็ลงเพิ่มได้แล้วไป config ตาม README ครับ

วิธีหา Token ที่แนะนำไปคือเวิร์คที่สุดแล้ว วิธีส่วนใหญ่จะให้ใช้ miio หา ถ้ากดหาเลยจะไม่เจอ Token (เจอขึ้นว่า ???) ต้อง Reset เครื่องก่อนแล้วเชื่อมกับ Wi-Fi ของตัวเครื่องเองก็จะได้ Token มาตัวนึง แต่พอไปผูกกันแอพใหม่อีกครั้ง Token ก็จะเปลี่ยนอีกที เลยทำให้ใช้ไม่ได้ แต่ผมก็ไม่มั่นใจว่าวิธีที่แนะนำไปจะใช้ได้อีกนานแค่ไหน ถ้าบล๊อกนี้เก่าเมื่อไหร่ให้แนะนำว่าไปหาวิธีหา Token ให้ได้ก่อนครับ

จริงๆจะสั่งผ่าน Siri ก็สามารถทำ Shortcuts บน iOS ก็ได้ แต่เหมือนแอพ Mi Home ยังไม่ Support ฮะ

ขอบคุณ ขอบคุณ ขอบคุณ

  • nfarina/homebridge — HomeKit support for the impatient
  • YinHangCode/homebridge-mi-airpurifier — XiaoMi air purifier plugins for HomeBridge.
  • Home-assistance.io — สำหรับวิธีการหา Token ที่อัพเฟิร์มแวร์เครื่องฟอก/แอพ Mi Homeรุ่นใหม่แล้วทำให้หา Token ยากมาก