ควบคุมอุปกรณ์ Mi Smart Home ด้วย Python API

ในปัจจุบันคงปฏิเสธไม่ได้ว่ามีอุปกรณ์ Smart Home หลากหลายยี่ห้อวางขายในท้องตลาด แต่หนึ่งในยี่ห้อที่ขายดีมากๆ ในตอนนี้คือยี่ห้อ Xiaomi โดยเฉพาะ Mi Air Purifier ที่หลายๆ คนแห่ซื้อกันในตอนวิกฤตการณ์มลภาวะฝุ่น PM 2.5

แต่การที่จะควบคุมอุปกรณ์ Smart Home เหล่านั้น จำเป็นต้องใช้แอปพลิเคชันของผู้ผลิตเท่านั้น ทำให้บางทีไม่สะดวกในการใช้งาน ยิ่งถ้าใช้ Smart Device หลายยี่ห้อยิ่งไม่สะดวก ซึ่งตัวผมนั้นได้วางระบบขึ้นมาเองเพื่อรวม Smart Device เข้าด้วยกัน และสามารถสั่งงานได้จากที่เดียว (ใช้ HomeBridge เป็น Core)

หัวใจหลักในการที่จะควบคุม Smart Device โดยไม่ใช้แอปของผู้ผลิตคือเราต้องมี API ไว้สั่งงาน และ 99% ของผู้ผลิตไม่เปิด API ให้ User อย่างเราใช้

Mi Smart Home ใช้ API ที่ชื่อว่า miiO ซึ่งเป็น API ปิด แต่ด้วยความที่มีคนซื้อมาใช้งานเยอะ ทำให้ API ถูก Reverse Engineer ออกมาหมดทั้ง API และ Protocol ที่ใช้สื่อสาร นอกจากนี้ยังมีคนทำ Python และ Node JS Library มาสำหรับใช้สั่งงานได้เกือบทุกอุปกรณ์ของ Xiaomi

1_3-4f23563dd1.jpg

สำหรับบล๊อกนี้ผมขอลองใช้ Mi Pedestal Fan กับ Python ครับ

ก่อนอื่น เราต้องมี Token ซึ่งเป็นกุญแจในการเชื่อมต่อกับอุปกรณ์

วิธีการหา Token นั้นมีหลายวิธี แต่ว่าวิธีที่ผมจะบอกต่อไปนี้เป็นวิธีเดียวจากหลายวิธีที่ผมลองแล้วสามารถใช้งานได้

  1. Download Mi Home เวอร์ชัน 5.4.49 ลงเครื่อง Android(สามารถหาโหลด apk ได้จากการค้นหาใน Google) – สำหรับใครที่ไม่มี Android ก็ไปหามาครับ หรือจะใช้ Emulator ก็ได้  แล้วทำไมต้องลง Version นี้ เวอร์ชั่นอื่นไม่ได้หรอ? ไม่ได้ครับ เพราะ App version นี้ ทางผู้ผลิตลืมปิด Debug Log ทำให้เราสามารถดึง token ออกมาจาก Log ได้ ถือว่าเป็นความโชคดีของพวกเราสุดๆ 5555555
  2. ติดตั้ง และ Login เข้าตัวแอปให้เรียบร้อยจนสามารถควบคุมอุปกรณ์ได้
  3. เข้าไปที่ Internal storage > SmartHome > logs > plug_DeviceManage จะเจอไฟล์ .txt อยู่ คัดลอกไฟล์นี้เข้าไปในคอมได้เลยphoto6210682040874019157
  4. ลองเปิดไฟล์ดังกล่าวดูในคอม จะเห็นว่ามี Log เต็มไปหมด รวมไปถึง Token ที่เรากำลังตามหาอยู่Screen Shot 2562-08-03 at 14.56.18

    จำไว้นะครับ Dev ทุกคน อย่าลืมปิด Debug log ก่อน release ไม่งั้นข้อมูลอาจจะรั่วได้แบบนี้ อิอิ

  5. เก็บ Token ที่ได้มาไว้ให้ดี

ต่อไปก็เป็นการโหลด Library Python มาใช้งาน

Library ชื่อ python-miio เป็น Library ที่เอาไว้ใช้ควบคุมอุปกรณ์ Mi Smart Home ได้เกือบแทบทุกอุปกรณ์

  1. ใช้คำสั่ง PIP ในการติดตั้ง
    pip3 install python-miio
  2. import เข้ามาและทำการ init Object ของอุปกรณ์ที่เราต้องการ ในที่นี้ผมลองกับพัดลม Mi Smart Pedestal Fan ส่วน Class สำหรับควบคุมอุปกรณ์อื่นๆ สามารถดูได้จาก Document ของ API
    Argument แรกคือ internal ip ของตัวอุปกรณ์ ส่วน Argument ที่สองคือ Token ที่เราได้มาScreen Shot 2562-08-03 at 15.10.02
  3.  ผมลองสั่งงานเปิด-ปิด ง่าย ๆ โดยใช้ method on() และ off() ครับ

 

เพียงเท่านี้คุณก็สามารถควบคุมอุปกรณ์ Mi Smart Home โดยไม่ต้องผ่านแอปในมือถือแล้ว ทำให้คุณจะเอาอุปกรณ์ไปใช้ในโปรเจ็คไหนก็ได้ ควบคุมผ่านอะไรก็ได้ โดยไม่มีข้อจำกัดแล้ว

สำหรับบล๊อกนี้ก็ขอจบลงเพียงเท่านี้ครับ สวัสดีครับ

โฆษณา

ใส่ความเห็น

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  เปลี่ยนแปลง )

Google photo

You are commenting using your Google account. Log Out /  เปลี่ยนแปลง )

Twitter picture

You are commenting using your Twitter account. Log Out /  เปลี่ยนแปลง )

Facebook photo

You are commenting using your Facebook account. Log Out /  เปลี่ยนแปลง )

Connecting to %s

Create a website or blog at WordPress.com

Up ↑

%d bloggers like this: