in Blog, How-to

มาทำ Smart Home ด้วย HomA กัน

HomA เป็น framework สำหรับสร้าง Smart Home รองรับการเชื่อมต่อกับอุปกรณ์ Internet of Things ได้อย่างง่ายๆ HomA ใช้ MQTT Protocol ในการสื่อสารและการเก็บข้อมูล การเชื่อมต่อของอุปกรณ์ IoT ต่างๆ ใน HomA เราจะเรียกว่า Components จะเชื่อมต่ออ่านเขียนข้อมูลกับ MQTT Broker ซึ่ง Components ไม่ได้หมายถึงตัวอุปกรณ์เพียงอย่างเดียว แต่รวมไปถึงบริการต่างๆ ด้วย เช่น Weather Service, Google Calendar เป็นต้น HomA มีตัวอย่างการติดตั้ง Components ต่างๆ ไว้หลายตัว เช่น Ambilight, Calendar, Logger, CSM, Rules, Sockets เป็นต้น สำหรับการควบคุม Components ต่างๆ สามารถสั่งงานผ่าน Mobile App ชื่อ HomA ได้เลย

มาลองเล่น HomA กัน เริ่มจากติดตั้ง HomA service กันก่อนดังนี้

export HOMA_BASEDIR=/opt/homa

git clone https://github.com/binarybucks/homA.git $HOMA_BASEDIR

cd $HOMA_BASEDIR

ติดตั้ง submodule

git submodule init

git submodule update


จากนั้นตั้งค่า config สำหรับ HomA เพิ่มเติม

sudo mkdir /etc/homa

sudo sh -c "echo HOMA_BASEDIR='$HOMA_BASEDIR' > /etc/homa/homa.conf"

sudo sh -c "echo HOMA_BROKER_HOST='localhost' >> /etc/homa/homa.conf"

sudo sh -c "echo HOMA_BROKER_PORT='1883' >> /etc/homa/homa.conf"

ติดตั้ง MQTT Broker

sudo apt-get install mosquitto mosquitto-clients

ตั้งค่า config /etc/mosquitto/mosquitto.conf ให้ mosquitto เก็บข้อมูลดังนี้

สั่งให้ mosquitto ทำงานทุกครั้งที่บูทเครื่อง

sudo systemctl enable mosquitto.service

sudo systemctl start mosquitto

จากนั้นเราจะมาลองติดตั้ง Components กัน Components เป็น Service ที่เขียนด้วย Node.js ตัว Components นี้จะสร้าง topic และข้อมูลสำหรับการตั้งค่าต่างๆ ที่เหมาะสมกับ Components นั้นๆ ตัวอย่างเข่น หลอดไฟ อยู่ในห้องนอน สามารถเปิด/ปิด หรี่ไฟได้ มี device id เป็น 123456 เป็นต้น หากเราเปิด App HomA ก็จะพบว่ามีห้องนอน ในห้องนอนมีหลอดไฟ เมื่อกดที่หลอดไฟก็จะควบคุมการปิด/เปิด หรี่ไฟได้ มาลองกัน demo กันจะได้เห็นภาพ

cd $HOMA_BASEDIR/components/demo

สั่งติดตั้ง node module ให้เรียบร้อย

npm install

จากนั้นสั่ง

./demo brokerHost 127.0.0.1 --brokerPort 1883

ตัว Component demo ก็จะเริ่มทำงาน หากมาดู topic เราจะพบว่า demo service นี้มี device id เป็น 293723-demo ซึ่งมี meta data กำกับใน topic ว่าชื่อ Main Blub และอยู่ในห้อง Bed Room ดังนี้

อย่ารอช้าเปิด App HomA ขึ้นมาตั้งค่า MQTT Broker ก่อน

แล้วกลับเข้ามาที่หน้าหลักเราจะพบว่ามีห้องนอนเพิ่มเข้ามาแล้ว

เลือกห้องนอน เราจะพบว่ามีอุปกรณ์ 1 ตัวคือ Main Blub

กดที่ Main Blub จะพบว่าสามารถควบคุมได้หลายอย่าง ได้แก่ เปิด/ปิด, หรี่ไฟ, แสดงข้อความ Some text ดูใน topic ส่วน controls

หากคุณต้องการลงทะเบียน Components นี้ไว้ตลอดจะต้องสร้างเป็น services ให้ทำงานผ่าน systemd ดังนี้

sudo ln -s $HOMA_BASEDIR/misc/systemd/homa@.service /etc/systemd/system/multi-user.target.wants/homa@demo.service

sudo systemctl --system daemon-reload

sudo systemctl start homa@demo.service

อ้อเกือบลืม HomA เป็นแค่เพียง framework สำหรับการควบคุมในส่วนอุปกรณ์จริงๆ จะต้องให้อุปกรณ์นั้นๆ มาอ่านค่าและเขียนค่าใน topic ที่สร้างไว้ใน MQTT Broker HomA มีตัวอย่าง Components อีกหลายตัวที่น่าสนใจลองเข้าไปเล่นกันดูได้ครับ