homebridge是一個輕量級 NodeJS 伺服器,它模擬 iOS HomeKit API,提供從 HomeKit 到「智能家居」設備製造商提供的各種第三方 API 的基本橋接。通過 Homebridge 的橋接,可以讓 Siri 控制完全不支持 HomeKit 的設備。
硬體設備:樹莓派3B、ESP8266、ws2812燈帶、繼電器;
軟體部分:homebrigde伺服器、mqtt伺服器、arduino IDE
基本功能:使用Iphone語音或軟體控制燈帶、繼電器開關、檯燈。
配置過程:
1)下載包含homebridge的raspbian_lite鏡像,並燒寫到樹莓派3B;樹莓派通電後一段時間,在手機上打開無線連接會出現一個homebridge的開放熱點;連接到這個熱點後會提示連接家裡的無線。輸入無線帳號密碼後,手機端開當前熱點。同時樹莓派會連接剛才配置的無線熱點。這樣就可以訪問樹莓派裡已經搭建的homebridge網頁了。在同一個區域網下,筆記本訪問homebridge.local,會提示輸入帳號:admin密碼:admin
2)控制檯燈,控制繼電器使用的是樹莓派上的GPIO引腳,通過控制引腳的高低電平信號來接入一些傳感器或者開關等。
首先搜索插件GPIO,這些插件是github開源的項目,這裡我們用的插件為(homebridge-gpio-device);https://github.com/dubocr/homebridge-gpio-device#digitaloutput
{
"accessory": "GPIODevice",
"name": "檯燈",
"type": "Lightbulb",
"pin": 5
}
在配置中增加配置信息,Json格式。保存後重啟homebridge服務即可。此時在配件中就可以控制檯燈亮滅了。除了在web界面上操作,還可以用iPhone自帶的「家庭」軟體,掃描二維碼添加當前設備,這樣就可以用Siri語音控制了。軟體可以設定場景例如增加場景「到家了」,配置開關打開、燈打開等操作;對Siri說「到家裡」,此時開關和燈會打開。
當發出高電平信號時繼電器開關閉合,檯燈亮;當發出低電平信號時繼電器開關閉合,檯燈滅;
3)通過homebridge控制esp8266+ws2812燈帶;
編寫代碼燒寫到esp8266,esp8266的代碼能夠連接到家裡的無線網,在他接收到控制信號後控制燈帶展示不同的燈光效果。
具體來說一下如何實現的:手機是怎麼控制燈帶的?
首先得有一個「快遞員」,能夠讓手機把這封信送出去,這個快遞員就是mqtt,這個mqtt伺服器可以搭建在樹莓派裡。MQTT 是一個基於發布/訂閱模式的消息傳輸協議。 所謂的訂閱和發布類似微信公眾號一樣的東西,esp8266訂閱了一個主題:led_color/transform/older/color
意思就是它關注了這個話題,任何關於這個主題的推送他都能收到。手機控制燈帶顏色為紅色,那麼相當於對這個主題發送了條消息:設置RGB顏色為(255, 0, 0);消息收到後esp8266就可以通過自己的引腳控制燈帶了。同時esp8266可以發布一個主題,將燈帶的狀態發布出去,這樣訂閱狀態主題的設備可以收到當前燈帶的狀態。
https://github.com/rvt/homebridge-esp8266leds