從0開始打造homebridge智慧家庭 - 使用Raspberry pi

今天要來分享一下打造整套homebridge的經驗,看了許多其他人分享的文章才成功運行,想打篇文章分享也讓自己記錄一下

--事前準備--

硬體方面:

  1. Raspberry pi 一台 (我是買較便宜的Raspberry pi 3A+)
  2. 基於 ESP8266 之 Nodemcu 一台 (我是買這個 Wemos D1 mini )
  3. Micro SD card 一張 (8G以上)

小零件:

  1. 紅外線IR LED             數顆
  2. 紅外線接收器              一顆
  3. DS18B20 溫度感測IC  一顆
  4. 2N3904 電晶體           數顆
  5. 單芯線                        些許
  6. 1K, 4.7K(用於溫度感測IC) 歐姆電阻 各一顆,18歐姆電阻  數顆(同LED顆數)---以下可選---
  7. USB Type A 公頭        一顆

工具類:

  1. 焊槍
  2. 焊錫
  3. 電腦一台
  4. Apple裝置一台
  5. Android裝置(可選) 一台

軟體方面:

  1. Arduino IDE
  2. Etcher SD Card
  3. MobaXterm (或其他 SSH 連線軟體)

--建構Raspberry pi--

安裝作業系統:

這邊是安裝樹莓派官方的 Rasbian ,首先,先到 官網 下載映像檔,這邊要注意 Lite 版本是沒有 GUI 的,若是需要 GUI 要下載 with desktop 的版本。

再來透過 Etcher SD Card 這個程式來將你的 Raspbian 系統「刷」進 SD Card
  • Select image 選擇前一步下載的壓縮檔內的映像檔
  • Select target 請確認已選擇到你的目標 SD Card
從0開始打造homebridge智慧家庭 - 使用Raspberry pi

開啟 SSH 及設定 Wi-Fi:

開啟SSH

根據 樹莓派官方教學 開啟 SSH 有 3 種方式,我採用的是最簡單的第三種
  1. 將你已燒錄完成的 SD Card 插入 windows 電腦
  2. 系統會讀到一個 boot 磁區 (無法讀取到 linux 系統所安裝的磁區)
  3. 在 boot 磁區內新增一個 檔案名稱為 ssh 的空白檔案 (無附檔名)

設定Wi-Fi

由於 Raspberry pi 3A+ 是沒有網路孔的,因此若沒有通過手動設定 Wi-Fi ,在第一次設定時要先外接一個螢幕來設定網路,否則無法透過 SSH 來連線

這邊一樣參考了 樹莓派官方教學 ,首先你需要一台 Linux 主機或虛擬機器,將 SD Card 插上後使用終端機運行 sudo nano /etc/wpa_supplicant/wpa_supplicant.conf ,在檔案底部新增以下資料
network = {
    ssid="testing"
    psk="testingPassword"
}

完成即可在開機後自動連接 Wi-Fi

安裝 homebridge 及相關軟體:

再來,我們終於可以將設定完的 SD Card 放入 Raspberry pi 來進行開機了!

首次開機後我們需要透過登入家裡的基地台來得知 Raspberry pi 的 IP 來進行 SSH 連線,這邊我用的軟體為 MobaXterm ,其他像是 Putty 等 SSH 連線軟體也都可以,預設的登入帳號密碼為:pi / raspberry

成功登入後,運行以下命令進行設定
  1. sudo apt-get update
  2. sudo apt-get upgrade (更新軟體及系統,這邊的時間可能會比較久)
  3. sudo apt-get install -y samba screen git
  4. sudo apt-get install curl
  5. curl -sL https://deb.nodesource.com/setup_6.x | sudo -E bash -
  6. sudo apt-get install -y nodejs
  7. sudo apt-get install npm
  8. sudo npm install -g npm (因為透過 apt-get 安裝的 npm 非最新版,無法和最新版 nodejs 相容)
  9. sudo apt-get install libavahi-compat-libdnssd-dev

安裝 homebridge

  1. sudo npm install -g --unsafe-perm homebridge

測試 homebridge

  • 輸入 homebridge
正常會出現以下畫面:
從0開始打造homebridge智慧家庭 - 使用Raspberry pi
這邊先不要用 iOS 裝置來新增家庭裝置,因為還沒新增配件,先按 Ctrl-C 即可跳出!

安裝 homebridge 插件

homebridge 插件主要用途為和你的周邊設備進行連接,在 這個網站 可以找到各種適合的插件,這邊由於我們透過的是 Nodemcu 來發射紅外線訊號進而控制設備,因此安裝了下面這兩個插件
輸入以下命令進行安裝:
  1. sudo npm install -g homebridge-http
  2. sudo npm install -g homebridge-http-temperature-sensor

設定 homebridge 插件

安裝完插件後,我們需要對插件進行設定,使用終端機運行以下指令進行設定
  • sudo nano /home/pi/.homebridge/config.json
然後打入以下內容:
{    "bridge": {
        "name": "Homebridge",
        "username": "00:00:00:00:00:00",
        "port": 51826,
        "pin": "123-45-678"
    },
"accessories": [
{
            "accessory": "Http",
            "name": "電燈",
            "switcHandling": "realtime",
            "http_method": "GET",
            "on_url": "http://homebridge.local/light/on",
            "off_url": "http://homebridge.local/light/off",
            "status_url": "http://homebridge.local/light/status",
            "status_on": "ON",
            "status_off": "OFF",
            "service": "Switch",
            "sendimmediately": "",
            "username": "",
            "password": ""
        },
        {
            "accessory": "HTTP-TEMPERATURE",
            "name": "室內溫度",
            "getUrl": "http://homebridge.local/status/temp"
        }
],
"platforms": []
}

上面的網址我們會在後面進行設定,可以依照自己的設定進行修改

iOS 裝置測試

設定到這邊,我們可以在終端機輸入 homebridge ,並拿出手邊的 iPhone 來進行新增裝置的測試了,不過由於尚未建構周邊裝置,因此會顯示無回應,像下面這張圖:

從0開始打造homebridge智慧家庭 - 使用Raspberry pi

安裝 homebridge GUI (可選)

在終端機執行以下指令
sudo npm install -g --unsafe-perm homebridge-config-ui-x

並在 config.json 新增以下設定
"platforms": [{
"platform": "config",
"name": "Config",
"port": 8080,
"sudo": false
}
]

輸入指令 homebridge -I ,即可透過瀏覽器來進入 homebridge 設定介面,網址為:
http://你的raspberry pi IP:8080

--NodeMCU軟體設定--

NodeMCU 是透過 Arduino IDE 來進行燒錄的,但因為不是官方 Arduino 板,我們需要進行一些設定來對板子進行支援,並且安裝我們所需要的額外的 library

新增開發板

開啟 Arduino IDE 偏好設定,在 額外的開發板管理網址 輸入
http://arduino.esp8266.com/stable/package_esp8266com_index.json

從0開始打造homebridge智慧家庭 - 使用Raspberry pi

新增 library

下載解壓完成後,將資料夾名稱分別改為 IRremoteESP8266 及 WifiManager 並移動至
C:\Program Files (x86)\Arduino\libraries 內,重新啟動 Arduino IDE

設定開發板

在工具 > 開發板 選擇 NodeMCU 1.0

從0開始打造homebridge智慧家庭 - 使用Raspberry pi

燒錄軟體

這邊可以參考我已寫好的程式進行更改,以下說明幾個比較重要的點:

Line 82: if (!MDNS.begin("homebridge")) 
這邊將決定了你的控制網址,像我這樣設定即為:
http://homebridge.local/......

Line 91~99: server.on("/airconditioner/on", airconditioner_on);
這邊設定了個別裝置的控制網址,這邊以「打開冷氣」為例,其控制網址為
http://homebridge.local/airconditioner/on
還記得剛剛在 config.json 內設定的網址嗎?
這邊設定完成後記得回到 raspberry pi 將網址設定成自訂的控制網址

Wi-Fi 連線設定

燒錄完成並通電後,請拿起手機連接名為 AutoConnectAP 的 Wi-Fi ,手機連線後會跳出登入頁面讓你輸入欲連接的 Wi-Fi 及 密碼 (下次開機即可自動連線囉!)

若想更換連接的 Wi-Fi ,可先輸入我設定好的重設網址:
http://homebridge.local/reset
再度重複上述步驟即可!

--NodeMCU硬體設定--

紅外線發射電路

首先是紅外線發射的部分,我們可以依照下圖進行接線,其中 Arduino 的部分需接到 D2 pin 腳 (或是你自行設定的腳位)
從0開始打造homebridge智慧家庭 - 使用Raspberry pi

電晶體腳位不熟悉可參考下圖:

從0開始打造homebridge智慧家庭 - 使用Raspberry pi

溫度感測IC電路

溫度感測IC (DS18B20) 電路可參考下圖,圖中 pin 2 需改為 D4 pin (或是你自行設定的腳位)

從0開始打造homebridge智慧家庭 - 使用Raspberry pi

硬體接線到這邊就差不多囉!若是想自己新增其他感測器 (如. 濕度計)也可以持續擴增!

--紅外線編碼錄製--

首先,接線部分請參考下圖, Vout 請接至 D5
從0開始打造homebridge智慧家庭 - 使用Raspberry pi

然後在 檔案 > 範例 內選擇範例檔案進行紅外線編碼錄製 (IRrecvDemo, IRrecvDump, IRrecvDumpv2 適用於不同遙控器,請自行選擇適合的範例程式)

打開範例後,將接收腳位改為 14 (D5)

從0開始打造homebridge智慧家庭 - 使用Raspberry pi

錄製完所需紅外線編碼後,請回頭修改你的 NodeMCU 程式碼,將原本的紅外線編碼替換為自己的編碼

--總體測試--

能夠順利達成這一步,代表你已經離成功不遠了,我們來進行整套系統的測試

  1. 打開 Raspberry pi 終端機輸入 homebridge
  2. 將 NodeMCU 通電並連線
  3. 開啟 iOS 裝置的「家庭」並新增裝置
順利的話,你現在就可以透過 iOS 裝置來控制家中電器啦!

從0開始打造homebridge智慧家庭 - 使用Raspberry pi

--額外設定1 - Raspberry pi 啟動自動執行 homebridge--

  1. 這個網頁 下載 homebridge 及 homebridge.service 兩個檔案
  2. 修改 homebridge 檔案第三行,改為 HOMEBRIDGE_OPTS=-U /var/lib/homebridge -I (這個設定可以讓你啟用 homebridge gui,若不需要請跳過)
  3. 將檔案上傳至 Raspberry pi 中
  4. 執行以下指令
    • sudo mv homebridge /etc/default
    • sudo mv homebridge.service /etc/systemd/system
  5. 新增一個系統使用者,輸入以下指令
    • sudo useradd --system homebridge
  6. 建立一個 homebridge 使用者可讀取的 /var/lib/homebridge 資料夾
    • sudo mkdir /var/lib/homebridge
    • sudo chmod 777 /var/lib/homebridge
  7. 將 homebridge 之 config.json 設定檔複製進去
    • sudo cp /home/pi/.homebridge/config.json /var/lib/homebridge
  8. 輸入以下指令
    • systemctl daemon-reload
    • systemctl enable homebridge
    • systemctl start homebridge
  9. 重新啟動
    • sudo shutdown -r now
這樣,你的 Raspberry pi 即會在啟動後自動啟動 homebridge 囉!

若是發現有問題,可以登入後在終端機輸入 journalctl -u homebridge 查看執行時發生的錯誤

--額外設定2 - 透過我的 Android 手機控制?--

這邊,我們要透過的是 Android 的 Google home 來連進我們所打造的系統,讓你雙系統通吃!

執行這步驟前,我們需要先將 homebridge gui (homebridge-config-ui-x)安裝完成

Raspberry pi 設定

首先,安裝以下 homebridge 插件
sudo npm install -g homebridge-gsh

再來,執行 homebridge -I ,並進入 homebridge gui (透過瀏覽器)

進入 Plugins ,按下 Homebridge google smart home 的 SETTINGS,按下 Link account ,並登入 Google 帳戶

詳細可以參考 這個網站

**注意:僅能登入一個 Google 帳戶,但我們可以透過在 Google home 內新增家庭成員來讓多人都能操控 **

Android 手機設定

  1. 至 Play store 安裝 Google home
  2. Google 無法自動搜尋到我們的系統,請先取消自動搜尋,並至首頁按下 新增 > 設定裝置 > 是否有已經設定好的裝置?
  3. 搜尋 homebridge ,並登入與剛剛同一個 Google 帳戶
  4. Google home 即可搜尋到我們在 homebridge 所設定好的裝置了!
因為 Google home 不支援感應器裝置,因此溫度計無法在 Google home 內使用


打到這邊,好累喔

Hey siri, 開啟冷氣!!

盡情享受你的成果吧
太厲害了,馬上收藏起來!
謝謝大大分享!
Google Home app 是支援溫度感應器的,要結合在恆溫器類型的裝置裡
Pixel 10 Pro XL Rooted
jj4156 wrote:
Google Home...(恕刪)


原來如此,不過透過homebridge-gsh似乎還沒辦法支援此類裝置!
santafeting wrote:
原來如此,不過透過homebridge...(恕刪)


所以我們現在都不會用HomeBridge了,而HB也久久才更新一次
現在都比較建議用Home Assistant
Pixel 10 Pro XL Rooted
紅外線遙控的部份可以用博聯的萬能遙控器,可以直接接入Home assistant,HA也可以直接跟homekit對接很方便
文章分享
評分
評分
複製連結

今日熱門文章 網友點擊推薦!