一、前言
最近大打算在家裡安裝智慧家居裝置,對比了米家,華為和HomeKit,最終還是選擇了HomeKit,小編打算使用米家裝置和自己開發的原生HomeKit裝置實現智慧家居,打算用homeassistant將米家和MQTT閘道器接入HomeKit,並且打算設計一款智慧家居面板,所以來折騰一下homeassistant。生命的意義在於折騰嘛。突然發現挖了好多坑。
二、準備工作
準備一臺可以root的手機。
三、安裝Linux
1. 手機要先root,然後安裝busybox以及linux deploy。
2. 開啟busybox只有一個安裝,預設安裝就可以了。
3. 開啟deploy,先點選右下角的配置,
映象大小盡量大一點,防止安裝失敗。
Ps:我的處理器支援armhf,能選擇hf的選一下,因為armel這種是不帶硬體浮點運算的,可能效能上會差一些,但是我的處理器不支援64位,所以無法用arm64,如果是A53或者A73這種新的支援64位系統的處理器可以用arm64,這樣安裝依賴會簡單很多,這裡只針對armhf平臺做說明。
4. 之後點選左上角,選擇“設定”,關閉“螢幕常亮”,鉤選鎖定wifi和CPU喚醒;在“環境”一欄點選“更新環境”,更新一下deploy執行的環境。
點選右上角,選擇“安裝”,之後就是耐心等待,安裝完成之後會顯示"<<deploy",之後點選右上角的“配置”。
5. 執行完成之後點選最下面的“啟動”,看到starting extra/ssh ... done,以及下一行的<<< start就是啟動成功了。
四、安裝python和依賴庫,安裝homeassitant
1. 用ssh方式登入到手機。
Windows可以用FInalShell,putty和xshell等軟體,小編比較喜歡用FInalShell,因為它可以顯示你主機的執行狀態,以及可以直接檢視到檔案目錄,直接從電腦拖檔案到主機。
MacOS也可以用FInalShell或者自帶的終端(terminal)。
使用操作自帶的終端應用的話,可以直接使用命令ssh 使用者名稱@ip地址:埠號(埠一般預設都是22,所以也可以不輸入)。
2. 登陸之後設定root密碼
sudo passwd root
輸入密碼即可
3. 安裝python,按順序輸入以下命令
1) 先更新一下apt-get元件
sudo apt-get update
sudo apt-get upgrade
2) 安裝依賴庫
sudo apt-get install build-essential tk-dev libncurses5-dev libncursesw5-dev libreadline-dev libdb5.3-dev libgdbm-dev libsqlite3-dev libssl-dev libbz2-dev libexpat1-dev liblzma-dev zlib1g-dev libffi-dev virtualenv -y
這一條命令是安裝一些必要的依賴環境,-y的意思是直接點yes確認,免得每個包都來一遍。
3)這三條命令分別是新建使用者(homeassistant)和使用者組。
sudo adduser --system homeassistant
sudo addgroup homeassistant
sudo usermod -G dialout -a homeassistant
5)
sudo su -s /bin/bash homeassistant
virtualenv -p python3 /srv/homeassistant
上面這條命令可能會失敗,這個時候需要進入到/srv/資料夾下,新建homeassistant資料夾,命令如下:
sudo mkdir /srv/homeassistant
然後賦予許可權:
sudo chmod 777 /srv/homeassistant
接著再執行命令就好了。
source /srv/homeassistant/bin/activate
為homeassistant設定執行環境,執行好之後應該會如下圖所示。
6)在設定好後的來環境下安裝homeassistant,在(homeassistant) root@ localhost:~#後邊的複製下面的程式碼
(homeassistant)$ pip3 config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
上一條是將pip3安裝器的源更換為清華的國內源,這樣安裝會快一些。下面提供一些用的pip源,選擇自己喜歡的:
阿里雲 http://mirrors.aliyun.com/pypi/simple/
中國科技大學 https://pypi.mirrors.ustc.edu.cn/simple/
豆瓣(douban) http://pypi.douban.com/simple/
清華大學 https://pypi.tuna.tsinghua.edu.cn/simple/
中國科學技術大學 http://pypi.mirrors.ustc.edu.cn/simple/
然後接著執行下面程式碼:
(homeassistant)$ pip3 install --upgrade pip
(homeassistant)$ pip3 install --upgrade setuptools
(homeassistant)$ pip3 install netdisco
(homeassistant)$ pip3 install --upgrade homeassistant
如果報錯,如圖所示:
執行一下程式碼
sudo apt-get install build-essential libssl-dev libffi-dev \
python3-dev cargo
pip3 install --upgrade homeassistant
接下來就是漫長的等待,可以看個電影什麼的再回來,當然取決於手機cpu的效能。等再次看到(homeassistant) root@ localhost:~#就是安裝好了。
五、啟動homeassistant
1.第一次啟動使用命令:
hass
就會啟動homeassistant系統。第一次啟動的時間比較久,所以需要耐心等待。若報許可權相關的錯誤執行程式碼:
su
輸入root密碼
sudo chmod 777 /srv/homeassistant
過個5到10分鐘,就可以在瀏覽器中輸入手機的IP地址加埠8123(預設埠),如:
http://192.168.0.79:8123
看看能否進入到系統頁面。
能進入頁面的話,第一步就是建立使用者名稱和密碼,之後可以在命令終端裡按鍵盤上的ctrl+c鍵,結束hass程序,進行下一步的設定。
2.在後臺開啟homeassistant使用者程序
用ssh登入手機linux系統開啟程序有個問題,就是關閉ssh後所有建立的程序也會一同關閉。可以理解成所有在ssh為父程序,ssh下建立的程序其實都子程序,父程序一關,子程序也就都會關掉。為了解決這個問題,可以使用nohup命令或者setsid命令。我自己現在用的是setsid。
再次登入到手機之後,先用:
sudo su -
進入超級使用者模式
source /srv/homeassistant/bin/activate
這時會顯示:(homeassistant) root@localhost:~#
使用命令:
nohup hass &
或者
setsid hass
推薦使用這個命令,這兩個命令會將hass在後臺執行,其父pid為1,退出ssh後不會終結服務。其中nohup執行後輸出的訊息都輸出到相應目錄下的nohup.out檔案。
如果想指定將資訊輸出到哪個檔案,可以用:
nohup hass > xxx.out >2 &1 &
其中xxx.out是想要輸出的檔名。
可以使homeassistant在後臺執行。
注:可以使用命令:
ps -ef
檢視後臺所有程序
ps -ef |grep hass
可以檢視hass程序的pid編號。假設程序pid為28678,可以用
kill 28678
強制結束程序。