Home Assistant + 樹莓派:強大的智能家居系統 · 安裝篇

原文發表於少數派:Home Assistant + 樹莓派:強大的智能家居系統 · 安裝篇

作者:cxlwill

------

最近少數派掀起了一陣樹莓派熱潮,各色教程湧出水面。將 Pi 接入智能家居控制系統並不新鮮,現有教程本身已經非常全面,但是由於 Homebridge 插件(下稱「HB」)的局限性,使其對智能家居設備的支持廣度和深度不足,間接影響了用戶使用 HomeKit 的體驗。例如,homebridge-aqara 插件並不支持小米網關 2 的自帶燈光控制,白白浪費了設備的功能。

為了擺脫這一束縛,我們可以利用另一個強大的智能家居平台:Home Assistant(下稱「HASS」)。

Home Assistant 是一個成熟完整的基於 Python 的智能家居系統,設備支持度高,支持自動化(Automation)、群組化(Group)、UI 客制化(Theme) 等等高度定製化設置。背後又有龐大的社群基礎,且不斷在更新。最重要的是我們可以通過 Homeassistant-homebridge 插件打通兩個平台,同樣實現設備的 Siri 控制。整套體系的框架如下:

(基本框架)

本系列將圍繞安裝、配置、開發等內容,詳細介紹 HASS 平台的方方面面,同時針對 HASS 與 HB 兼容與選擇,自動化配置方法等等問題給出自己的觀點和探索,希望可以給大家玩轉智能家居帶來新的啟發和收穫。

HASS 支持大部分平台,簡而言之,只要你的主機能跑 Python,基本就能安裝 HASS。配合「魔鏡」項目,以及便捷性的考慮,我選擇的平台是樹莓派 3,本系列教程也將基於樹莓派展開,兼顧其他平台。

1. 初始安裝

1.1 樹莓派

在樹莓派安裝 HASS,有 2 種方法供選擇:

1. 以其他操作系統(這裡以樹莓派官方系統 Raspbian 為例)為根系統,再通過指令安裝;

2. 直接安裝集成了 HASS 的 Hassbian 操作系統。

以上 2 種方法從性能上來說並無二異,均能實現 HASS 全部功能,Hassbian 實際上亦基於 Raspbian ,唯一需要納入考慮的是圖形化操作界面的需求。由於樹莓派基金會官方尚未公開單獨安裝圖形化操作界面的方法,在當下,如果有該需求,只能通過官方圖形化操作系統 Raspbian with Desktop 實現。

方法 1 :

安裝前,請參考 梓姵君 的 文章 對樹莓派進行初始基礎設置,重點關注地區、WiFi、源替換的內容,這裡不再展開。特別注意:2016 年 11 月後的官方系統默認關閉 SSH 功能,請務必打開。

使用任何方法連接到樹莓派終端,輸入以下安裝代碼:

$ curl -O https://raw.GitHubusercontent.com/home-assistant/fabric-home-assistant/master/hass_rpi_installer.sh && sudo chown pi:pi hass_rpi_installer.sh && bash hass_rpi_installer.sh

注意:不要以 sudo 運行,然後泡杯茶,做點別的事情,等待程序跑完。安裝時間根據網路情況不等,大約需要 1 - 2 個小時,國內網路環境大家自行改善。

如果你是使用此方法安裝 HASS 的話,未來更新指令如下:

sudo su -s /bin/bash homeassistantsource /srv/homeassistant/homeassistant_venv/bin/activatepip3 install --upgrade homeassistantexit

方法 2 :

參考 copriwolf 的 教程 使用 Etcher 安裝官方最新固件鏡像。

感謝少數派友 DJ 千辛萬苦的搬運至度娘盤(password: 2e98)

要注意的是,Hassbian 初次啟動時需要聯網進行原始設置,由於無法在初次啟動前設置無線網路,因此務必將樹莓派與電腦或者路由器有線連接起來,以保證樹莓派在有網環境下順利設置。

官方教程告知初次啟動需要等待 5 分鐘左右,基於國內的網路環境,我這裡測試多次,都需要等待近 10 分鐘方可,所以大家不要焦躁,可以看部番劇或者往下研究一下此篇文章以便接下來順利進展。

如果等待時間過久卻沒有出現初始界面,可嘗試使用以下命令強制初始安裝

sudo systemctl enable install_homeassistant.servicesudo systemctl start install_homeassistant.service

如果使用此方法,未來更新指令如下:

$ sudo systemctl stop home-assistant@homeassistant.service$ sudo su -s /bin/bash homeassistant$ source /srv/homeassistant/bin/activate$ pip3 install --upgrade homeassistant$ exit$ sudo systemctl start home-assistant@homeassistant.service

無論使用哪種方法,等待過後,在瀏覽器輸入:http://樹莓派的ip地址:8123(查找樹莓派 IP 地址可以直接前往路由器界面)

如果出現類似下圖,則表示初始安裝完成;如若沒有出現界面,或者無法連接,有很大可能是尚未安裝完畢,不要著急再等等。(注意地址冒號為英文字元,請勿輸入中文冒號)。

Hassbian 安裝注意:初次啟動後請等待初始安裝出現以下界面後,再進行後續操作,否則你的一切工作都是前功盡棄。並且初次啟動時,勿 SSH,勿輸入任何代碼,保持通電、聯網、靜置狀態!非常重要!

(home-assistant)

1.2 macOS

macOS 自帶 Python,如果你不小心誤刪,請先重新安裝。macOS 下安裝 HASS 也相當簡單:

$ pip3 install homeassistant

2. 附加功能安裝

2.1 SMB(必須)

SMB 可以幫助我們開啟樹莓派的網盤模式,方便未來文件傳輸,這裡我們除安裝外把該功能加入了系統自啟項目。

通用安裝指令:

sudo apt-get install samba sudo smbpasswd -a homeassistant -nsudo nano /etc/samba/smb.conf[global]netbios name = raspberrypiserver string = The Pi File Centerworkgroup = WORKGROUPhosts allow =remote announce =remote browse sync =[HOME ASSISTANT]path = /home/homeassistant/.homeassistantcomment = No commentbrowsable = yesread only = novalid users =writable = yesguest ok = yespublic = yescreate mask = 0777directory mask = 0777force user = homeassistantforce create mode = 0777force directory mode = 0777hosts allow =

Ctrl+X,Y,回車

sudo systemctl restart smbd.service

Hassbian 提供了一個附加功能工具包 hassbian-config ,這使我們的安裝更加簡便。使用工具包安裝原則上已經自動配置好一切,建議大家還是修改一下許可權和密碼。

安裝指令:

sudo hassbian-config install sambasudo smbpasswd -a pi

重啟服務

sudo systemctl restart home-assistant@homeassistant.service

2.2 MQTT

MQTT是基於二進位消息的發布、訂閱編程模式的消息協議,廣泛用於物聯網部署中。部分智能家居設備需要 MQTT 連接。

通用安裝指令:

sudo apt-get install mosquitto mosquitto-clients python-mosquittosudo systemctl start mosquitto

Hassbian 工具包安裝:

sudo hassbian-config install mosquittosudo systemctl start mosquitto

3. Homebridge 安裝

HASS 本身可以通過網頁控制,這也賦予了其全平台的控制能力。當然,想必不少人還是沖著語音控制功能考慮智能家居的,對於 iOS 用戶來說,想要更自由地使用 HomeKit,HB 依然是繞不開的環節。

HB 的安裝我就更不多說了,歡迎大家參考另外幾篇文章,這裡我根據之前指導派友的經驗簡單概括一下。

HB 提供一行安裝指令:sudo npm install -g --unsafe-perm homebridge 但是安裝成功率比較低,推薦大家使用下面的手動安裝指令。

sudo apt-get install git makesudo apt-get install g++curl -sL https://deb.nodesource.com/setup_7.x | sudo -E bash -sudo apt-get install -y nodejssudo apt-get install libavahi-compat-libdnssd-devsudo npm install -g --unsafe-perm homebridge hap-nodejs node-gypcd /usr/local/lib/node_modules/homebridge/(注意這裡如果顯示不存在文件夾,替換成 cd /usr/lib/node_modules/homebridge/)sudo npm install --unsafe-perm bignumcd /usr/local/lib/node_modules/hap-nodejs/node_modules/mdns(注意這裡如果顯示不存在文件夾,替換成 cd /usr/lib/node_modules/hap-nodejs/node_modules/mdns)sudo node-gyp BUILDTYPE=Release rebuild

進行到這裡,HB 就已經安裝完成了,這裡建議大家直接輸入homebridge運行一次,以生成示例配置文件,然後 Ctrl + C 退出。

接著,安裝 Homeassistant-homebridge 插件,實現平台聯動:

sudo npm install -g homebridge-homeassistant

4. 添加自啟任務

忙活了那麼久,即將大功告成了。最後臨門一腳,我們把 HASS 和 HB 添加至樹莓派開機任務中,這樣每次啟動後就會自動運行上述 2 個進程。

注意:配置 HB 前程序會運行錯誤,提示缺少配置文件,可先不理會。

cd /sudo useradd --system homebridgesudo mkdir /var/homebridgesudo cp ~/.homebridge/config.json /var/homebridge/sudo cp -r ~/.homebridge/persist /var/homebridgesudo chmod -R 0777 /var/homebridgecd /etc/default

sudo nano homebridge 複製粘貼

# 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 systemds journalctl: journalctl -f -u homebridge# DEBUG=*

Ctrl+X,Y,回車

cd /etc/systemd/systemsudo nano homebridge.service

複製粘貼

[Unit]Description=Node.js HomeKit Server After=syslog.target network-online.target[Service]Type=simpleUser=homebridgeEnvironmentFile=/etc/default/homebridgeExecStart=/usr/lib/node_modules/homebridge/bin/homebridge $HOMEBRIDGE_OPTSRestart=on-failureRestartSec=10KillMode=process[Install]WantedBy=multi-user.target

Ctrl+X,Y,回車

cd /sudo systemctl daemon-reloadsudo systemctl enable homebridgesudo systemctl start homebridgesudo systemctl status homebridgesudo systemctl enable mosquitto

最後重啟:sudo reboot

OK,重啟過後,一切就緒。

我將在下一篇「設備接入篇」中繼續介紹如何將智能家居設備接入 HASS 。

歡迎大家加入項目相關 Slack 進行討論,該討論組還包括了魔鏡項目的內容。

Changelog

7.19:刪除 KODI 相關內容,文章系列化。

7.16:今天 HASS 發布了 49.0 更新,終於支持主題和小米掃地機器人了!

7.15:魔鏡項目已經步入收尾階段,Home Assistant其實是個非常強大的平台,之後我將定期撰文介紹更多有關 Home Assistant 配置方法等,敬請期待。

7.12: 前天買了 Yeelight 彩光燈帶,嘗試接入 Home Assistant 平台,開啟後發現錯誤。谷歌一下才知道如果要在 HA 中控制 Yeelight,一定要打開 HA 的開發者模式。考慮到功耗,遂改為直接使用 Homebridge 了。

7.5:樹莓派於前幾天推出系統更新 4.9,HA 最新版本為 48.1。另外有一些PI友向我詢問如何接入Yeelight。有2種方法:其一通過 Homebridge-yeelight 插件,由 homebridge 接入;其二在 homeassistant 中添加 Yeelight 的 platform。相應的配置我就不贅述了,基本就是安裝對應插件,然後修改相關配置文檔。還有一些 Pi 友問我如何接入掃地機器人。目前 Homeassistant 上我沒看到相關插件,請使用 Homebridge 接入,GitHub 地址 在此 輸入:

npm install -g homebridge-xiaomi-mi-robot-vacuum miio

6.6:陸續有 Pi 友出現控制設備失敗的現象,大部分由於在 configure.yaml 文件中小米網關的 sid 採用了小寫字母。請大家特別注意使用大寫字母。另目前最新版本 Home Assistant 為 46.0。

鳴謝

本篇文章參考的代碼和內容有:

  • 威鋒網 hhalibo 的 教程

  • 什麼值得買 Yang_John 的 分享

  • 少數派網站 Junyi Lou 的 教程

  • Homebridge GitHub 源碼

  • Home Assistant GitHub 源碼

感謝以上提及作者的分享。

封面來源:鏈接

推薦閱讀:

自製「少女の體香」,人人都是頂級調香師!
小產品,要不要任性?
智能家電的概念特別火,你認為最重要的智能冰箱會是怎樣的呢?
小米魔方發布 神乎其技!但失眠也不好受啊!

TAG:智能家居 | 树莓派RaspberryPi | 教程 |