วิธีเชื่อมต่ออุปกรณ์อัจฉริยะกับ HomeKit (ด้วย Raspberry Pi)
เผยแพร่แล้ว: 2022-01-29อุปกรณ์อัจฉริยะจำนวนมากข้ามการสนับสนุน Apple HomeKit และทำงานร่วมกับ Alexa, Google และแพลตฟอร์มอื่นๆ เท่านั้น ด้วยแฮ็ค Raspberry Pi นี้ คุณสามารถเพิ่มการรองรับ HomeKit ให้กับอุปกรณ์อัจฉริยะใดๆ ด้วยซอฟต์แวร์ Homebridge โอเพ่นซอร์ส
HomeKit สำหรับอุปกรณ์อัจฉริยะทุกชนิด
หากคุณใช้ HomeKit แบบครบครัน ปัญหาใหญ่อย่างหนึ่งก็คือมีอุปกรณ์อัจฉริยะเพียงไม่กี่เครื่องที่รองรับ ตัวอย่างเช่น สิ่งเดียวที่รั้งหลอดไฟอัจฉริยะราคาถูกไว้คือการขาดการรองรับ HomeKit ตัวเลือกของ Amazon สำหรับ "หลอดไฟอัจฉริยะ" คือชุดสี่ชุดจาก TECKIN ซึ่งในการเขียนนี้ มีราคาประมาณ 40 เหรียญสหรัฐฯ ซึ่งน้อยกว่าหลอด LIFX เพียงหลอดเดียว
แน่นอนว่ามันไม่ได้พรีเมี่ยมเท่า LIFX; สีไม่สดใสเท่าและพวกมันก็ส่งเสียงฮือฮาในห้องน้ำ แต่ราคา 10 เหรียญต่อป๊อปก็คุ้มค่าที่ไม่มีใครเทียบได้
ปัญหาหลักคือพวกเขาไม่มีการสนับสนุน HomeKit พวกเขาไม่ได้โง่เขลาอย่างสิ้นเชิง ใช้งานได้กับ Google Home, Alexa, IFTTT และแอปของผู้ผลิต เหมาะสำหรับผู้ที่มีหลอดไฟอัจฉริยะ TECKIN เท่านั้น
อย่างไรก็ตาม เนื่องจากคุณไม่สามารถเข้าถึงได้จาก HomeKit คุณจึงไม่สามารถควบคุมได้จากแอพบ้าน วิดเจ็ตในศูนย์ควบคุม หรือ Siri คุณไม่สามารถรวมไว้ในฉากที่มีหลอดไฟจากยี่ห้ออื่นหรือใช้ในระบบอัตโนมัติได้ หากคุณได้ลงทุนใน HomeKit แล้ว นี่อาจเป็นตัวทำลายข้อตกลง
พบกับโฮมบริดจ์
โชคดีที่มีแฮ็กที่ทำให้หลอดไฟเหล่านี้มีประโยชน์มากขึ้น HomeKit API อนุญาตให้อุปกรณ์ที่เรียกว่าบริดจ์ เช่น Philips Hue เชื่อมต่ออุปกรณ์ย่อยที่ทำงานบนโปรโตคอลอื่น คุณเพียงแค่เพิ่มบริดจ์เป็นอุปกรณ์ใน HomeKit และมันลงทะเบียนไฟแต่ละดวงที่เชื่อมต่อกับบริดจ์ใน HomeKit เมื่อใดก็ตามที่คุณขออัปเดตไฟ โทรศัพท์ของคุณจะพูดกับสะพาน และสะพานจะพูดกับแสง
ดังนั้น บริดจ์เพียงแค่ถ่ายทอดข้อมูลจาก API หนึ่งไปยังอีก API เนื่องจากคุณควบคุมหลอดไฟ TECKIN ได้ทางอินเทอร์เน็ต คุณจึงสามารถเชื่อมต่อกับ HomeKit ได้ทั้งหมดโดยใช้ซอฟต์แวร์เพียงอย่างเดียว โดยไม่ต้องใช้ฮาร์ดแวร์ที่เป็นเอกสิทธิ์เฉพาะ
หากคุณมี Raspberry Pi อยู่รอบๆ (ค่า Pi Zero มูลค่า 5 ดอลลาร์ก็ใช้ได้) คุณสามารถตั้งค่าให้เป็นบริดจ์ที่มีเฟรมเวิร์กที่เรียกว่า Homebridge ได้ แอปพลิเคชั่น NodeJS น้ำหนักเบานี้เลียนแบบ HomeKit API และส่งต่อคำขอไปยังอุปกรณ์อัจฉริยะที่ไม่ใช่ HomeKit ของคุณ
โดยพื้นฐานแล้ว คุณเรียกใช้มันบน Pi และเพิ่มอุปกรณ์ 'ใบ้' แต่ละเครื่องลงในแอป Home เมื่อคุณพยายามควบคุมหลอดไฟผ่านแอพ Home หรือ Siri Homebridge จะคุยกับอุปกรณ์ต่างๆ ให้คุณ หลังจากที่คุณตั้งค่า มันเหมือนกับว่าอุปกรณ์รองรับ HomeKit ตั้งแต่แรก
สิ่งนี้ต้องการให้อุปกรณ์ทำงาน Homebridge ตลอดเวลา ดังนั้นนี่ไม่ใช่สิ่งที่คุณจะติดตั้งบนแล็ปท็อปของคุณ Raspberry Pi นั้นเหมาะสมที่สุด แต่หากคุณมีอุปกรณ์เก่า คุณสามารถปรับเปลี่ยนการใช้งานเป็นเซิร์ฟเวอร์หรือเดสก์ท็อปที่ทำงานตลอดเวลา คุณก็สามารถติดตั้งอุปกรณ์นั้นที่นั่นได้
Homebridge เป็นเฟรมเวิร์ก และคุณสามารถขยายได้ด้วยปลั๊กอิน มีการสนับสนุนชุมชนที่ค่อนข้างใหญ่ ดังนั้นจึงมีโอกาสที่ดีที่อุปกรณ์สมาร์ทใด ๆ อาจมีปลั๊กอิน Homebridge เพื่อเพิ่มการสนับสนุน หากอุปกรณ์ของคุณไม่มีปลั๊กอิน แต่อุปกรณ์อัจฉริยะของคุณมี API และคุณเชี่ยวชาญด้านเทคโนโลยี คุณก็เขียนด้วยตัวเองได้
สำหรับคนส่วนใหญ่ การตั้งค่าเป็นเพียงการติดตั้ง Homebridge และปลั๊กอินของแบรนด์สำหรับอุปกรณ์ พร้อมกับการกำหนดค่าเล็กน้อย หากคุณสามารถใช้บรรทัดคำสั่งและมีเวลาสักเล็กน้อย มันก็ค่อนข้างง่าย
การติดตั้งและกำหนดค่าโฮมบริดจ์
Homebridge เป็นแอป NodeJS ดังนั้นคุณต้องติดตั้ง node
และ npm
เพื่อใช้งาน หากเครื่องของคุณใช้ Linux คุณอาจได้รับจากตัวจัดการแพ็คเกจ
บน Ubuntu คุณต้องพิมพ์ข้อความต่อไปนี้เพื่อตั้งค่า Node repo ด้วยตนเอง จากนั้นติดตั้ง nodejs
:
curl -sL https://deb.nodesource.com/setup_13.x | sudo -E ทุบตี - sudo apt-get ติดตั้ง -y nodejs
มิฉะนั้น คุณสามารถศึกษาหน้าดาวน์โหลดของ Node เพื่อดูข้อมูลเกี่ยวกับวิธีการติดตั้งสำหรับ OS เฉพาะของคุณ
หากคุณใช้ Linux คุณต้องติดตั้งการพึ่งพาบางรายการดังที่แสดงด้านล่าง:
sudo apt-get ติดตั้ง libavahi-compat-libdnssd-dev
หลังจากนั้น คุณสามารถติดตั้ง Homebridge ได้ทั่วโลกผ่าน npm
ดังที่แสดงด้านล่าง:
sudo npm install -g --unsafe-perm homebridge
คุณต้องการติดตั้งปลั๊กอินของแบรนด์ที่คุณต้องการด้วย เนื่องจาก Homebridge เป็นเพียงเฟรมเวิร์ก ตัวอย่างเช่น สำหรับหลอดไฟ TECKIN ปลั๊กอินคือ homebridge-tuya-web
ซึ่งติดตั้งทั่วโลกเช่นกัน
คุณจะพิมพ์ต่อไปนี้:
npm ฉัน homebridge-tuya-web -g
หลังจากติดตั้งทุกอย่างแล้ว ก็ใช้งานได้จริง! พิมพ์ข้อมูลต่อไปนี้เพื่อเรียกใช้ Homebridge หนึ่งครั้งและเริ่มต้นทุกอย่าง:
สะพานบ้าน
มันจะบ่นเกี่ยวกับการขาดการกำหนดค่าซึ่งคุณต้องสร้าง ไดเร็กทอรีเริ่มต้นคือ ~/.homebridge/
แต่คุณสามารถใช้พารามิเตอร์ -U
ได้หากต้องการย้าย
พิมพ์ข้อมูลต่อไปนี้เพื่อสร้างไฟล์การกำหนดค่า JSON ใหม่ในโฟลเดอร์นี้:
nano ~/.homebridge/config.json
ไม่ว่าคุณจะใช้ปลั๊กอินใดก็ตาม คุณต้องมีการกำหนดค่าพื้นฐานต่อไปนี้:
{ "สะพาน": { "ชื่อ": "โฮมบริดจ์", "ชื่อผู้ใช้": "CC:22:3D:E3:CE:30", "พอร์ต": 51826, "หมุด": "031-45-154" }, "description": "Custom HomeBridge Server", "พอร์ต": { "เริ่มต้น": 52100, "จบ": 52150, }, "แพลตฟอร์ม": [ ] }
สิ่งนี้กำหนดค่า Homebridge ด้วยพอร์ตเริ่มต้น ชื่อ PIN และช่วงพอร์ตที่พร้อมใช้งานเพื่อจัดสรรให้กับอุปกรณ์อื่น
ภายในอาร์เรย์ platforms
ว่าง คุณวางการกำหนดค่าสำหรับปลั๊กอินแต่ละตัว คุณควรจะสามารถค้นหาคำแนะนำและตัวอย่างสิ่งนี้ได้ในหน้า GitHub ของปลั๊กอินแต่ละหน้า
ในตัวอย่างด้านล่าง homebridge-tuya-web
สำหรับหลอดไฟ TECKIN ต้องการทราบชื่อผู้ใช้และรหัสผ่านของฉันเพื่อเชื่อมต่อกับ API สำหรับแอปของ bulb และอีกสองสามสิ่ง:
"แพลตฟอร์ม": [ { "platform": "TuyaWebPlatform", "name": "TuyaWebPlatform", "ตัวเลือก": { "ชื่อผู้ใช้": "ชื่อผู้ใช้", "รหัสผ่าน": "รหัสผ่าน", "รหัสประเทศ": "1", "แพลตฟอร์ม": "smart_life", "pollingInterval": 10 } } ]
เมื่อกำหนดค่าทั้งหมดแล้ว Homebridge ก็ควรพร้อมใช้งาน เรียกใช้อีกครั้ง และเทอร์มินัลของคุณควรแสดงรหัส QR ขนาดยักษ์ที่อาจบังคับให้คุณย่อ สแกนสิ่งนี้ด้วยแอพ Home เพื่อเพิ่มและอุปกรณ์ที่เชื่อมต่อทั้งหมดไปยัง HomeKit
Homebridge โหลดปลั๊กอินของคุณและควรบันทึกข้อความไปยังหน้าจอสำหรับอุปกรณ์แต่ละเครื่องที่พบ คุณควรเห็นพวกเขาทั้งหมดใน HomeKit หลังจากที่เพิ่มเข้าไปแล้ว และควรใช้งานได้อย่างสมบูรณ์
ฉันสังเกตเห็นความล่าช้าเล็กน้อยเมื่อเทียบกับหลอดไฟ LIFX ของฉัน อาจเป็นเพราะหลอดไฟถูกควบคุมผ่าน API มากกว่าการควบคุมโดยตรง ในตอนแรก หลอดไฟก็ไม่แสดงสีขาวและสีขาวนวลอย่างถูกต้อง แต่หลังจากปรับแต่งเล็กน้อย ฉันก็จัดฉากที่เหมาะสมได้
คุณสามารถกำหนดค่าอุปกรณ์ในแอปของตนเองได้ตลอดเวลา รอให้แอป Home อัปเดต จากนั้นตั้งค่าฉากใน HomeKit ด้วยการกำหนดค่าที่กำหนดไว้ล่วงหน้า
หากคุณต้องการเพิ่ม Homebridge อีกครั้ง คุณจะต้องลบโฟลเดอร์ที่ persist/
ในไดเร็กทอรี config จากนั้นลบบริดจ์ออกจาก HomeKit ออกจากการตั้งค่าของ bulb ที่เชื่อมต่อใต้แท็บ "Bridge"
การเพิ่ม Homebridge เป็นบริการ
หากคุณต้องการให้ Homebridge ทำงานตลอดเวลา คุณอาจต้องการกำหนดค่าให้รีสตาร์ทหากเกิดปัญหาหรือหาก Raspberry Pi รีสตาร์ท คุณสามารถทำได้ผ่านบริการ Unix ตั้งค่านี้หลังจากที่คุณได้ตรวจสอบแล้วว่า Homebridge ทำงานตามที่ตั้งใจไว้
ขั้นแรก เพิ่มผู้ใช้บริการใหม่ ชื่อ homebridge
:
sudo useradd -M --system โฮมบริดจ์
ตั้งรหัสผ่าน:
sudo passwd โฮมบริดจ์
ถัดไป คุณจะต้องย้ายการกำหนดค่า homebridge
นอกโฮมไดเร็กทอรีส่วนตัวของคุณ /var/lib/homebridge/
น่าจะใช้ได้:
sudo mv ~/.homebridge /var/lib/homebridge/
ตรวจสอบให้แน่ใจว่าผู้ที่ใช้ homebridge
เป็นเจ้าของไดเร็กทอรีนั้นและโฟลเดอร์ย่อยทั้งหมด:
sudo chown -R โฮมบริดจ์ /var/lib/homebridge/
เมื่อเสร็จแล้ว คุณสามารถสร้างบริการได้ โดยสร้างไฟล์ใหม่ชื่อ homebridge.service
ใน /etc/systemd/system/
:
sudo nano /etc/systemd/system/homebridge.service
แล้ววางการกำหนดค่าต่อไปนี้:
[หน่วย] Description=บริการโฮมบริดจ์ After=syslog.target network-online.target [บริการ] ประเภท=ง่าย User=homebridge ExecStart=/usr/bin/homebridge -U /var/lib/homebridge รีสตาร์ท=on-failure รีสตาร์ทวินาที=10 KillMode=กระบวนการ [ติดตั้ง] WantedBy=multi-user.target
โหลด services daemon ใหม่เพื่ออัปเดตด้วยการเปลี่ยนแปลงของคุณ:
sudo systemctl daemon-reload
ตอนนี้ คุณควรจะสามารถเปิดใช้งานบริการของคุณได้ (ตั้งค่าให้ทำงานเมื่อบู๊ต):
sudo systemctl เปิดใช้งานโฮมบริดจ์
และเริ่มต้น:
sudo systemctl เริ่มโฮมบริดจ์
หากคุณต้องการแก้ไขข้อผิดพลาดที่เกิดจากการกำหนดค่าบริการ คุณสามารถดูบันทึกของบริการได้โดยพิมพ์:
journalctl -fn 50 -u โฮมบริดจ์