Homebridge + LG WebOS TV
本文簡單紀錄如何實現用 Siri 來控制 LG WebOS TV。
Homebridge 是用來模擬 HomeKit 設備的橋接器,因為支援 Apple HomeKit 的設備並不多,所以用這個套件即可讓更多的設備來加入 HomeKit,並讓 Siri 來控制。該套件是用 NodeJS 寫的輕量級伺服器,只要系統可以安裝 Node v4.3.2 或以上版本皆可執行,本文以安裝在 macOS High Sierra 並控制 LG WebOS TV 作為示範。
Installation
於 macOS 上安裝順序為 Xcode
-> nodejs
-> homebridge
1. Install Xcode
在 Terminal 上輸入 gcc
及會跳出安裝提示視窗。或是到 App Store 下載安裝
2. Install NodeJS
使用 homebrew 安裝
$ brew install node
3. Install Homebridge
$ npm -g install homebridge --unsafe-perm
無跳出任何 error 即可繼續下面第四步驟。
若有出錯,請更新 Xcode 版本或是跟筆者一樣跳出類似下列錯誤
gyp ERR! configure error
gyp ERR! stack Error: Command failed: /usr/local/anaconda3/bin/python -c import sys; print "%s.%s.%s" % sys.version_info[:3];
gyp ERR! stack File "<string>", line 1
gyp ERR! stack import sys; print "%s.%s.%s" % sys.version_info[:3];
gyp ERR! stack ^
gyp ERR! stack SyntaxError: invalid syntax
可能是 Anaconda
版本問題,筆者是直接移除 Anaconda 後就可以正常安裝 Homebridge 。
4. Install Homebridge Plugin
安裝完主要的 Homebridge 套件後,接著需要加入家電的套件
可在 npm 搜尋別人寫好的套件,以 LG WebOS 為例,安裝 homebridge-webos-tv
$ npm install -g homebridge-webos-tv
Configuration
- 在家目錄底下的
.homebridge
建立config.json
$ vim ~/.homebridge/config.json
2. 填入以下範例設定
{
"bridge": {
"name": "Homebridge",
"username": "CC:22:3D:E3:CE:30",
"port": 51826,
"pin": "031-45-154"
},
"description": "This is my fake HomeKit device.",
"accessories": [{
"accessory": "webostv",
"name": "My webOS tv",
"ip": "192.168.0.40",
"mac": "ab:cd:ef:fe:dc:ba",
"keyFile": "/home/pi/.homebridge/lgtvKeyFile",
"volumeControl": "switch",
"mediaControl": false,
"pollingEnabled": true,
}
],
}
bridge
是設備必要的設定description
為這個模擬的 HomeKit 加入描述accessories
是套件需求的設定,詳細設定請參考套件作者說明
Add homebridge to iOS
設定好了之後,直接執行 homebridge
$ homebridge
執行後會直接跑出一個 QRCode,用裝置掃描登入 HomeKit 即完成。
現在你就可以用 Siri 來控制家電啦~
電視接到第一次控制指令會跳出驗證確認,選擇 Yes 即可
Launch on boot
讓 homebridge 每次開機就自動啟動,可以利用 macOS 內建的 Launchctl
- 新增一個檔案
$ vim ~/Library/LaunchAgents/org.homebridge.plist
2. 加入以下內容
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>tautulli</string>
<key>ProgramArguments</key>
<array>
<!-- Modify these two lines if you need to to reflect your python location and Tautulli install location -->
<string>/usr/local/bin/node</string>
<string>/usr/local/bin/homebridge</string>
</array>
<key>RunAtLoad</key>
<true/>
<key>KeepAlive</key>
<true/>
</dict>
</plist>
3. 最後載入至 launchctl
清單中即可
$ launchctl load ~/Library/LaunchAgents/org.homebridge.plist
Reference
Homebridge — https://www.npmjs.com/package/homebridge
WebOS Plugin — https://www.npmjs.com/package/homebridge-webos-tv