閑著沒事瞎研究一下,主要是根據網上已有的教程自己嘗試搭建home-assistant,本文檔僅記錄一下自己的搭建過程。
一、事前準備
pc(必須為windos專業版,如果不是,可以退出本文章了)、網絡(可以訪問github)、github賬號,以及一些智能家居設備(非必需,只是為了驗證最終效果)
homeassistant(簡稱ha、hass)可以裝在任何機器上,本次采用的方式是在window電腦上安裝docker,再起linux容器進行安裝。
homeassistant作為智能家居的控制核心,是需要7*24小時待機的,正常情況下應當部署在如樹莓派、NAS上。本次只是興趣使然想要體驗一遍安裝過程,同時看下效果,判斷以后有沒有長期使用的必要。
二、安裝docker
docker是什么這里不再過多介紹,可以通俗的理解為一個虛擬機的管理器,利用它可以實現在window上跑linux,想要在windows上安裝docker,windows版本必須是專業版。
可以進入官網下載:https://www.docker.com/products/docker-desktop/,
下載完成后一路默認安裝,可以直接安裝在C盤,如果覺得C盤空間不夠,也可以指定到其他路徑,推薦安裝在固態硬盤上。
安裝完成后檢查是否安裝成功,打開一個終端(在任意文件夾路徑下,按 shift + 鼠標右鍵,選擇在此處打開powershell窗口,下方提到打開終端都是這樣操作)
輸入 docker --version
正確顯示版本號即安裝成功,(我的docker安裝較早,沒有進行升級,官網下載安裝后,可能版本不一樣)
安裝成功后啟動docker,由于默認鏡像庫地址是國外的,使用起來不方便,需要設置一下鏡像庫地址,在電腦右下角找到docker的圖標,右鍵setting,打開docker管理面板,在Docker Engine里粘貼以下內容
"registry-mirrors": ["https://mkts104l.mirror.aliyuncs.com"]
此為阿里云鏡像庫,如有需要也可以自己找其他的。
三、拉取鏡像并創建容器
docker安裝完成后,我們就可以拉取鏡像以創建容器了,為了方便下邊操作,先簡單介紹幾個需要用到的docker常用命令
docker --help 查看幫助,以下命令均可以在幫助里找到
docker images 查看鏡像
docker ps 查看正在運行的容器
docker ps -a 查看所有容器
docker search 在鏡像倉庫里搜索鏡像
docker pull [鏡像名] 拉取鏡像
docker network create 為docker創建網橋
docker run [鏡像名] 使用指定鏡像創建容器
docker start [容器id] 啟動指定容器
docker stop [容器id] 停止指定容器
docker exec [容器id] 進入指定容器
docker cp [文件路徑] [容器id:文件路徑] 向容器指定路徑拷貝文件
以上就是接下來會用到的所有docker相關命令。
-
查找home-assistant鏡像
打開終端,輸入
docker search home-assistant
拉取第一個星標最多的鏡像(忘截圖了,一般只要替換了阿里云的鏡像庫,這里都不會出錯)
docker pull homeassistant/home-assistants
- 拉取完成后查看鏡像列表
可以看到鏡像出現在本地,正常情況下接下來只要使用該鏡像創建一個容器就好了。
根據本人的踩坑經驗,這里還需要加入一些其他步驟,因為最終homeassistant是運行在容器里的,我們想要在外部訪問,就必須要訪問容器的ip和端口(homeassistant的默認端口是8123)
但是本人實測,宿主機,即我的windows電腦,無法訪問到容器里邊的ip和端口(也有可能是我自己的問題,故這里需要加入一個步驟,以把容器的ip固定下來,同時將容器里的端口映射出來,這樣我們就可以在局域網里的任何設備上訪問了。當然,如果你事先有過docker的使用經驗,且確保自己電腦不存在這樣的問題,那以下步驟可以跳過
-
為docker創建一個網橋
docker network create --subnet=172.30.0.0/16 docker01
這里我指定的ip號段為172.30.0.0/16,后續使用該網橋生成的容器都會屬于該網段
-
使用之前的鏡像創建容器
docker run -itd --privileged=true --name hass --network=docker01 --ip 172.30.0.6 -p 8123:8123 -p 6021:21 -p 6022:22 -v /sys/fs/cgroup:/sys/fs/cgroup homeassistant/home-assistant
創建容器的標準命令為
docker run -ti [鏡像名]
,這里加入了一些其他參數,簡單介紹下其含義
--name 為容器指定別名,不指定時由docker自行分配
--network 為容器指定網橋
--ip 指定ip,ip 要在網橋設置范圍內,如果不指定ip,容器重啟后ip可能會變
-p 進行端口映射,即將宿主機端口和容器端口建立連接
根據需求修改 --name --network --ip -p 配置即可。
創建成功會返回一串id,這是新創建容器的唯一標識,記住這個id,后續會用到,不過不用全部記住,一般前3位就足以標識
-
啟動容器
docker start 686
(686要替換成你的id前三位) -
進入容器
docker exec -it 686 /bin/bash
此時會進入linux命令行模式,默認進去的路徑是 /config,這里就是 homeassistant所在路徑。
需要注意,該鏡像生成的容器是基于 linuxkit的,內核為Alpine,默認支持的命令非常少(連vim都沒有),如果需要,可以通過
apk add
命令添加(apk即為其包管理工具,如果找不到需要的內容,可以瀏覽器搜索 Alpine如何安裝xxx)
四、設置homeassistant
如果前邊的步驟順利的話,容器啟動后,我們就可以在windows上訪問homeassistant了。
-
登錄并注冊
打開瀏覽器,輸入 127.0.0.1:8123,進入 homeassistant界面
根據提示進行注冊,記好自己設置的賬號和密碼,其他的設置不重要,后期可以改。
-
注冊成功后即可進入homeassistant的管理界面,到這里,ha部署就算完成了。但為了將我自己米家的設備添加進來,同時也為了使用方便,還有一個重要的步驟要完成。
五、安裝HACS
hacs可以理解為homeassistant的應用商店,我們可以通過它方便的獲取到github上其他人開發的ha新內容。
安裝方式有很多,我這里采用離線安裝的方式,在github上找到hacs對應的項目,下載文件直接上傳到容器內,重啟容器即可
打開終端,進入容器,并進入homeassistant路徑,創建兩個文件夾: www 和 custom_components
docker exec -it 686 /bin/bash
cd /config
mkdir {www,custom_components}
然后從github下載hacs所需文件:https://github.com/hacs/integration/tree/main/,
通過github下載,我們只需要找到custom_components/hacs 這個文件夾將其上傳即可(所有插件下載同理,在github上ha相關的項目里都會有custom_components文件夾,將其里邊的內容上傳到容器對應目錄即可 )
然后將該文件上傳到容器內,假設文件路徑為 D:\Download\hacs
新開一個終端,輸入以下命令
docker cp D:\Download\hacs 686:/config/custom_components/
進入容器內確認文件上傳成功后重啟容器
docker restart 686
容器重啟后刷新瀏覽器,重新進入hass管理界面
依次選擇 配置 -> 設備與服務 (忽略我截圖左側列表的HACS,這是添加成功后才會有的)
第一次打開時,這里應該是空的,點擊右下角添加集成,搜索HACS
選擇進行添加,由于我已經添加成功,沒辦法重復添加,在網上找了幾個添加過程的截圖:
這里四個勾全選,右下角有繼續按鈕,
這里需要復制最下方的八位字符,然后選中github的鏈接,右鍵在新的標簽頁打開,將復制的字符粘貼進去,根據提示進行認證
等待片刻就會添加成功,如果過程失敗就重新添加試試,如果多次嘗試都不成功,再考慮homeassistant和hacs版本是否兼容的問題。
添加完成后,在 配置-> 設置與日志 里找到服務管理,點擊重新啟動,不需要刷新頁面,等待片刻即可重啟成功(也可以直接重啟容器)
這時,左側列表就會出現HACS了,以后需要安裝其他插件可以通過它來安裝。
六、安裝Xiaomi MIoT
為了將米家設備接入進來,我們還需要另一個插件:Xiaomi MIoT,可以像安裝HACS那樣安裝,也可以直接通過HACS安裝,
通過HACS安裝:
依次選擇 HACS -> 集成 ,點擊右下角 瀏覽并下載存儲庫,搜索 xiaomi,找到Xiaomi MIoT進行安裝。
通過下載文件的方式離線安裝,github地址:https://github.com/ha0y/xiaomi_miot_raw。
后續安裝步驟參考 hacs安裝,不再重述。
只需要登錄小米賬號,即可獲取到米家里的所有設備信息,然后就可以將它們選擇性的添加到hass了。
添加完成后,即可在首頁看到它們,也可以自定義顯示樣式
查看pc的內網ip地址,就可以在內網的任一設備上訪問(容器需要保持運行狀態),平板訪問示例:
至此,windows部署hass結束。可以愉快的玩耍啦。