這次裝潢的時侯,主臥跟客廳都採用了電動窗簾。客廳採用電動窗簾,最主要的原因是怕傢俱、木作久了會變色,所以想說用了電動窗簾,設定 schedule 後,白天就可以自動把窗簾拉上,增加傢俱及木作的耐用度。
但是這款電動窗簾其實並沒有 schedule 的功能,只有一個無線遙控器,因此只好自己來了 XD
我使用了 OpenHAB + RM2 Pro +RM Bridge 來完成第一步。
第一步 – 用 RM Bridge 來控制窗簾
http://rm-bridge.fun2code.de/
原本的 RM2 Pro 就可以透過它的 App 就來控制窗簾了,但 App 並沒有提供任何 API 或者 HTTP command 讓我們透過程式去操作,因此我另外用了 RM Bridge 操作 RM2 Pro。
RM Bridge 本身就有提供 learning code 的介面 http://rm-bridge.fun2code.de/rm_manage/code_learning.html,你可以自己定義指令名稱,然後按下原本的遙控器讓他學習即可。下面則是窗簾、投影機及布幕等學習完的指令清單。接下來只要透過 URL 就可以去發射遙控器訊號了。
當然,RM2 Pro 本身也有提供完整的 SDK,所以其實要全部自己來,不透過 RM Bridge 也是可以的。
第二步 – 整合進入 OpenHAB
http://www.openhab.org/
OpenHAB 是我目前最喜歡的 home automation 平台,因為各式各樣的 binding 非常豐富,從常見的 Philips Hue, Sonos, INSTEON,到 DAIKIN 冷氣,SAMSUNG電視,甚至我的音樂撥放器 SqueezeBox 都有。而一般 RD 最喜歡看到的 HTTP,TCP也都一應俱全,而且如果覺得不夠,也可以自己再擴充,真的是夢幻逸品啊 XD
這裡我是使用 HTTP binding 來跟 RM Bridge 整合。OpenHAB 最困難的地方是它的設定檔,官方網頁開宗明義就有說:很難學,但是很值得 XD
首先要把它加到 OpenHAB 的 item 中,以我的環境為例:
/opt/openhab/configurations/items/demo.items
在最後面加入
Switch Curtain “Living Room Curtain” { http=”>[ON:GET:http://192.168.11.5:7474/code/openit] >[OFF:GET:http://192.168.11.5:7474/code/closeit]” }
這樣就多了一個 type 為 Switch 的 Curtain 物件,並在 ON/OFF 時分別會送不同的 URL
接下來要在 sitemaps 中把這個 Curtain 加進去:
/opt/openhab/configurations/sitemaps/homekit.sitemap
sitemap homekit label=”Diro HomeKit” {
Switch item=Curtain label=”Curtain”
Switch item=Screen label=”Screen”
Switch item=Projector label=”Projector”
}
接下來啟動 OpenHAB 後,就可以透過瀏覽器看到:
https://github.com/htreu/OpenHAB-HomeKit-Bridge
最後就是要想辦法跟 SIRI 做整合了,只能說 OpenHAB 實在太強大了,貢獻者眾,竟然已經有人寫好了 HomeKit Bridge!!
因此只要正確的啟動,就沒有問題了
npm start — –name “myopenhab-bridge” –sitemap homekit
如果平常沒有在用 node.js 的,應該會缺很多 package,基本上補一補就沒什麼問題了
npm install --save-dev babel-preset-es2015
npm install --save-dev babel-preset-stage-2
接下來最重要的是要安裝 eve 來編輯 HomeKit database。打開 eve 後,就會有設定介面,並且可以找到 myopenhab-bridge 這個裝置,加進去之後,就可以看到下面所有的設備啦(Curtain, Projector, Screen…)
接下來就跟操作一般 HomeKit 的設備一樣了,設定房間、設備名稱等,然後就可以用 SIRI 來控制他們了 🙂
示範影片: