Homebridge + LG WebOS TV

Louie Jhuang
5 min readOct 15, 2018

--

本文簡單紀錄如何實現用 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

  1. 在家目錄底下的 .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

  1. 新增一個檔案
$ 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

--

--