從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 是支援溫度感應器的,要結合在恆溫器類型的裝置裡
jj4156 wrote:
Google Home...(恕刪)


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


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

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