安裝 HomeBridge On Raspberry Pi 3b

mingster

HomeBridge是基於nodejs server的應用,它模擬iOS HomeKit,成為一個我們可以『控制』的網關。

我們需要HomeBridge來搭入Apple設備,這樣就可以使用siri/iPhone/iPad 來控制小米、Home Assistant、或其他HomeBridge有plug-in的platform了。

HomeBridge是基於nodejs的應用,在Pi上,nodejs的版本很關鍵。不work 大部份就是這裡出錯。

少數派已經有文解釋了。以下是操作的筆記。

#*** 很重要 – 本文只適用於 Pi 3B 的硬體 *** 要知道你的Pi是哪個版本,可以:

1
cat /proc/cpuinfo | grep 'Revision' | awk '{print $3}' | sed 's/^1000//'

a02082, a22082, 或 a32082 才是 Pi 3.

出處

硬體確認了,就可以進行以下HomeBridge的安裝。

第一步 清理nodejs

裝了幾次HomeBridge都出錯,結論就是nodejs版本不正確,所以先清空nodejs可以保證接下來的安裝。

若有其他node.js的東西在run,就不能這樣做了。

1
2
sudo apt-get remove nodejs
rm -rf /usr/lib/node_modules/home*

第二步 安裝HomeBridge所需軟體

  1. 安裝相關軟體:
    1
    
    sudo apt-get install git gcc g++ make python3
    
  2. 安裝node repository (版本很重要,不能亂換):

https://github.com/nodesource/distributions

1
2
3
4
5
6
7
8
9
curl -sL https://deb.nodesource.com/setup_13.x | bash -
sudo apt-get install -y nodejs

<<<<<<< Updated upstream
sudo apt-get install -y npm
=======
# upgrade npm (version 6.13.4 has issues with git dependencies)
sudo npm install -g npm
>>>>>>> Stashed changes
  1. 安裝Avahi包:
1
sudo apt-get install libavahi-compat-libdnssd-dev
  1. 安裝 homebridge及相關 (–unsafe-perm 很重要,不能拿掉):

Reference: Installing Homebridge

1
sudo npm install -g --unsafe-perm homebridge homebridge-config-ui-x hap-nodejs
  1. 安裝 bignum
1
2
cd /usr/lib/node_modules/homebridge/
sudo npm install --unsafe-perm bignum

安裝會有錯誤warning,可以不理他。

  1. 重整 mdns
1
2
3
cd /usr/lib/node_modules/mdns

sudo node-gyp BUILDTYPE=Release rebuild

第三步 安裝homebridge-homeassistant

安裝『homebridge-homeassistant』插件,就可以把HB跟HA串起來,來實現平台聯動:

1
sudo npm install -g homebridge-homeassistant
1
2
3
4
5
6
7
8
sudo chmod -R 755 /usr/lib/node_modules/
sudo chown -R pi.pi /usr/lib/node_modules/

rm -rf ~/.cache/
mkdir ~/.cache/
sudo chmod -R 755 ~/.cache/

npm install -g --unsafe-perm homebridge-broadlink-rm
  1. Run “which node” to determine your node path.
  2. Run “sudo setcap cap_net_raw+ep /path/to/node”.
1
2
which node
sudo setcap cap_net_raw+ep /usr/lib/

第四步 HomeBridge 設定

以下是我的設定,接了小米及Home Assistant:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
{
"bridge": {
    "name":"Homebridge",
    "username":"拉拉拉拉拉",
    "port":51826,
    "pin":"拉拉拉拉拉"
  },
"platforms": [{
      "platform": "MiAqaraPlatform",
      "gateways": {
          "拉拉拉拉拉": "拉拉拉拉拉"
      }
  }],
"platforms": [{
    "platform": "HomeAssistant",
    "name": "HomeAssistant",
    "host": "http://127.0.0.1:8123",
    "password": "拉拉拉拉拉",
    "supported_types": ["automation", "binary_sensor", "climate", "cover", "device_tracker", "fan", "group", "input_boolean", "light", "lock", "media_player", "remote", "scene", "script", "sensor", "switch", "vacuum"],
    "logging": true,
    "verify_ssl": false
  }]
}

小米如何設,可以看這裡

第五步 測試

進入homebridge身份:

1
sudo su -s /bin/bash homebridge
1
homebridge -D

看看結果,Ctrl + C 來退出。

第六步 將 HomeBridge 安裝成服務

  1. 用root身份,新增服務設定 sudo vi /etc/default/homebridge

    貼上以下:

    1
    2
    3
    4
    5
    6
    7
    
     # Defaults / Configuration options for homebridge
     # The following settings tells homebridge where to find the config.json file and where to persist the data (i.e. pairing and others)
     HOMEBRIDGE_OPTS=-U /var/homebridge
    
     # If you uncomment the following line, homebridge will log more
     # You can display this via systemd's journalctl: journalctl -f -u homebridge
     # DEBUG=*
    
  2. 新增服務script: sudo vi /etc/systemd/system/homebridge.service

    貼上以下:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    
     [Unit]
    Description=Node.js HomeKit Server
    After=syslog.target network-online.target
    [Service]
    Type=simple
    User=homebridge
    EnvironmentFile=/etc/default/homebridge
    ExecStart=/usr/bin/homebridge $HOMEBRIDGE_OPTS
    Restart=on-failure
    RestartSec=10
    KillMode=process
    [Install]
    WantedBy=multi-user.target
    
  3. 開HomeBridge專屬的帳號

    1
    
     sudo useradd --system homebridge
    
  4. 設定檔位置:
    1
    
     sudo mkdir /var/homebridge
    
  5. 將測試好的設定檔拷到 /var/homebridge/ 並設開放的權限:

    1
    2
    3
    
     sudo cp ~/.homebridge/config.json /var/homebridge/
     sudo cp -r ~/.homebridge/persist /var/homebridge
     sudo chmod -R 0777 /var/homebridge
    

第六步 測試服務

1
sudo systemctl daemon-reload

打開:

1
sudo systemctl enable homebridge

啟動:

1
sudo systemctl start homebridge

狀態:

1
sudo systemctl status homebridge

都裝好了,就可以開始將設備接入

第七步 更新

要更新homebridge,可以:

1
2
sudo npm upgrade -g homebridge
sudo npm upgrade -g homebridge-homeassistant

Node更新

1
sudo hb-service rebuild

References