in Blog

มาเล่น HAP-NodeJS สำหรับ HomeKit Accessory กัน

เนื่องจากมีหลายท่านแนะนำ HomeKit ของ Apple ให้ลองเล่นกับ Siri ทั้ง Dearware และ Chiang Mai Maker Club (CMMC) ได้ทำเล่นกันไปสนุกสนานกันไปนานแล้ว ก็เลยมาเล่นบ้าง โครงการ HomeKit Bridge แบบนี้มีนักพัฒนาหลายคนพยายามแกะโปรโตคอล เพื่อสร้างอุปกรณ์หลอกๆ แล้วสั่งให้ Siri ทำงานได้ โดยไม่ต้องไปหาซื้ออุปกรณ์ที่รองรับ HomeKit มาใช้งานจริงๆ เช่น คุณอยากจะควบคุมหลอดไฟในบ้าน ก็ไม่ต้องไปซื้อ SmartBlub มาเปลี่ยนทั้งบ้าน อยากจะควบคุมปลั๊กไฟในบ้านก็ไม่ต้องเปลี่ยนเต้าเสียบทั้งบ้าน เป็นต้น

โดยปกติ HomeKit Accessory จะทำงานผ่าน Wifi หรือ Bluetooth หากสามารถสร้าง Accessory หลอก HomeKit ได้ ก็สามารถใช้ Siri สั่งงานได้ ซึ่งโครงการแบบนี้มีอยู่เยอะพอสมควร โดน Apple ปิดไปบ้างก็มี ครั้งนี้มาแนะนำ HAP-NodeJS เป็น HomeKit Accessory Server ดูจากชื่อใช้ Node.js ก็สามารถเอาไปติดตั้งที่ไหนก็ได้ PC, Router ที่ใช้ OpenWRT หรือ Raspberry Pi มาลงมือติดตั้งกันเลย เราจะใช้ Raspberry Pi เป็น Accessory Server กัน

มาติดตั้ง HAP-NodeJS กันเลย

apt-get install python-dev python-pip libavahi-compat-libdnssd-dev

ติดตั้ง Node.JS

wget http://node-arm.herokuapp.com/node_latest_armhf.deb

dpkg -i node_latest_armhf.deb

clone HAP-NodeJS จาก git repository

git clone https://github.com/KhaosT/HAP-NodeJS.git

cd HAP-NodeJS

ติดตั้ง Node Module ที่ต้องใช้

npm install -g

เมื่อติดตั้ง service เสร็จแล้ว สั่ง HAP-NodeJS ทำงานได้เลย ดังนี้

node Core.js

เท่านี้เราก็ได้ Homekit Bridge มาเล่นแล้ว ให้ติดตั้ง HomeKit Catalog แล้วตั้งค่า Accessory ได้เลย

เพิ่มบ้านก่อนให้เรียบร้อย

จากนั้นเพิ่ม Accessory ในบ้าน ตัวอย่างจะใช้หลอดไฟ

จากนั้นก็บอกให้ Siri เปิดไฟ ปิดไฟได้เลย

แต่อย่าเพิ่งดีใจไป เพราะ Accessory ใน HAP-NodeJS เป็นของปลอม เราจะต้องเขียน code เพื่อไปสั่งการทำงานของอุปกรณ์ของคุณเอง ลองมาดูตัวอย่าง หลอดไฟกัน ดู code ในส่วนนี้

หากคุณใช้ Raspbery Pi เป็นตัวควบคุมอุปกรณ์ผ่าน GPIO คุณสามารถใช้ python-shell เพื่อ execute code เพื่อสั่งเปิด/ปิดไฟ, ปรับความสว่าง ตาม funtion ที่ต้องการ ตัวอย่าง ควมคุม GPIO 16 ให้เปิดไฟ เป็นต้น

หากคุณให้ Raspbery Pi เชื่อมต่อกับ MQTT Broker คุณก็สามารถใช้วิธีการแบบนี้เช่นกันครับ