--事前準備--
硬體方面:
- Raspberry pi 一台 (我是買較便宜的Raspberry pi 3A+)
- 基於 ESP8266 之 Nodemcu 一台 (我是買這個 Wemos D1 mini )
- Micro SD card 一張 (8G以上)
小零件:
- 紅外線IR LED 數顆
- 紅外線接收器 一顆
- DS18B20 溫度感測IC 一顆
- 2N3904 電晶體 數顆
- 單芯線 些許
- 1K, 4.7K(用於溫度感測IC) 歐姆電阻 各一顆,18歐姆電阻 數顆(同LED顆數)---以下可選---
- USB Type A 公頭 一顆
工具類:
- 焊槍
- 焊錫
- 電腦一台
- Apple裝置一台
- Android裝置(可選) 一台
軟體方面:
- Arduino IDE
- Etcher SD Card
- MobaXterm (或其他 SSH 連線軟體)
--建構Raspberry pi--
安裝作業系統:
這邊是安裝樹莓派官方的 Rasbian ,首先,先到 官網 下載映像檔,這邊要注意 Lite 版本是沒有 GUI 的,若是需要 GUI 要下載 with desktop 的版本。再來透過 Etcher SD Card 這個程式來將你的 Raspbian 系統「刷」進 SD Card
- Select image 選擇前一步下載的壓縮檔內的映像檔
- Select target 請確認已選擇到你的目標 SD Card

開啟 SSH 及設定 Wi-Fi:
開啟SSH
根據 樹莓派官方教學 開啟 SSH 有 3 種方式,我採用的是最簡單的第三種- 將你已燒錄完成的 SD Card 插入 windows 電腦
- 系統會讀到一個 boot 磁區 (無法讀取到 linux 系統所安裝的磁區)
- 在 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
成功登入後,運行以下命令進行設定
- sudo apt-get update
- sudo apt-get upgrade (更新軟體及系統,這邊的時間可能會比較久)
- sudo apt-get install -y samba screen git
- sudo apt-get install curl
- curl -sL https://deb.nodesource.com/setup_6.x | sudo -E bash -
- sudo apt-get install -y nodejs
- sudo apt-get install npm
- sudo npm install -g npm (因為透過 apt-get 安裝的 npm 非最新版,無法和最新版 nodejs 相容)
- sudo apt-get install libavahi-compat-libdnssd-dev
安裝 homebridge
- sudo npm install -g --unsafe-perm homebridge
測試 homebridge
- 輸入 homebridge

這邊先不要用 iOS 裝置來新增家庭裝置,因為還沒新增配件,先按 Ctrl-C 即可跳出!
安裝 homebridge 插件
homebridge 插件主要用途為和你的周邊設備進行連接,在 這個網站 可以找到各種適合的插件,這邊由於我們透過的是 Nodemcu 來發射紅外線訊號進而控制設備,因此安裝了下面這兩個插件輸入以下命令進行安裝:
- sudo npm install -g homebridge-http
- 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 來進行新增裝置的測試了,不過由於尚未建構周邊裝置,因此會顯示無回應,像下面這張圖:
安裝 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

新增 library
下載解壓完成後,將資料夾名稱分別改為 IRremoteESP8266 及 WifiManager 並移動至C:\Program Files (x86)\Arduino\libraries 內,重新啟動 Arduino IDE
設定開發板
在工具 > 開發板 選擇 NodeMCU 1.0
燒錄軟體
這邊可以參考我已寫好的程式進行更改,以下說明幾個比較重要的點: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 腳 (或是你自行設定的腳位)
電晶體腳位不熟悉可參考下圖:

溫度感測IC電路
溫度感測IC (DS18B20) 電路可參考下圖,圖中 pin 2 需改為 D4 pin (或是你自行設定的腳位)
硬體接線到這邊就差不多囉!若是想自己新增其他感測器 (如. 濕度計)也可以持續擴增!
--紅外線編碼錄製--
首先,接線部分請參考下圖, Vout 請接至 D5
然後在 檔案 > 範例 內選擇範例檔案進行紅外線編碼錄製 (IRrecvDemo, IRrecvDump, IRrecvDumpv2 適用於不同遙控器,請自行選擇適合的範例程式)
打開範例後,將接收腳位改為 14 (D5)

錄製完所需紅外線編碼後,請回頭修改你的 NodeMCU 程式碼,將原本的紅外線編碼替換為自己的編碼
--總體測試--
能夠順利達成這一步,代表你已經離成功不遠了,我們來進行整套系統的測試- 打開 Raspberry pi 終端機輸入 homebridge
- 將 NodeMCU 通電並連線
- 開啟 iOS 裝置的「家庭」並新增裝置


--額外設定1 - Raspberry pi 啟動自動執行 homebridge--
- 到 這個網頁 下載 homebridge 及 homebridge.service 兩個檔案
- 修改 homebridge 檔案第三行,改為 HOMEBRIDGE_OPTS=-U /var/lib/homebridge -I (這個設定可以讓你啟用 homebridge gui,若不需要請跳過)
- 將檔案上傳至 Raspberry pi 中
- 執行以下指令
- sudo mv homebridge /etc/default
- sudo mv homebridge.service /etc/systemd/system
- 新增一個系統使用者,輸入以下指令
- sudo useradd --system homebridge
- 建立一個 homebridge 使用者可讀取的 /var/lib/homebridge 資料夾
- sudo mkdir /var/lib/homebridge
- sudo chmod 777 /var/lib/homebridge
- 將 homebridge 之 config.json 設定檔複製進去
- sudo cp /home/pi/.homebridge/config.json /var/lib/homebridge
- 輸入以下指令
- systemctl daemon-reload
- systemctl enable homebridge
- systemctl start homebridge
- 重新啟動
- sudo shutdown -r now
若是發現有問題,可以登入後在終端機輸入 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 手機設定
- 至 Play store 安裝 Google home
- Google 無法自動搜尋到我們的系統,請先取消自動搜尋,並至首頁按下 新增 > 設定裝置 > 是否有已經設定好的裝置?
- 搜尋 homebridge ,並登入與剛剛同一個 Google 帳戶
- Google home 即可搜尋到我們在 homebridge 所設定好的裝置了!
打到這邊,好累喔