由于有位樓主跟我說引用了他的文章,我這里說明下,引用的文章會很多,碰到的問題也多,文末有各路大神的文章,需要的自己去看。我的目標(biāo):用Ipad中的HomeKit智能家居!用Siri來控制你的家用電器,最近蘋果的智能家居平臺比較火熱,什么值得買平臺以及少數(shù)派報(bào)告都有比較多的文章介紹。目前自己手上的硬件有Ipad,樹莓派2B,nodemcu(esp8266),DTH11 溫濕度傳感器等等。剛好Home Assistant是一個運(yùn)行在Python 3的開源家庭自動化平臺。它可以追蹤、控制你家里的所有設(shè)備,并且能實(shí)現(xiàn)自動化控制。先用圖描述下幾者關(guān)系,方便理清思路。

下面說下具體的安裝實(shí)現(xiàn)過程,安裝過程中的軟件我會上傳到百度云分享給大家。
1:格式化TF卡

2:刻錄hassbian鏡像,使用的是etcher刻錄軟件

查看U盤,發(fā)現(xiàn)容量只有40M了,不用擔(dān)心,只是啟動文件。


3:上電運(yùn)行
將燒寫好的TF卡插到樹莓派上,插上網(wǎng)線,上電啟動。

上電完成之后,提示用戶名登錄,用戶名:pi ? ? ?密碼:raspberry

4:查看hassbian是否安裝成功
打開谷歌瀏覽器(切記一定用谷歌瀏覽器,360瀏覽器是打不開的),瀏覽器輸入:192.168.1.121( 樹莓派的IP):8123

出現(xiàn)這個界面,說明hassbian已經(jīng)安裝成功,并且服務(wù)已經(jīng)自動啟動。
5:替換安裝更新源
更換一下源:sudo nano /etc/apt/sources.list在第一行首添加”#“號,再在最上方添加如下代碼(如果不安裝KODI,最后一行(第三個安裝源)可忽略):
deb http://mirrors.aliyun.com/raspbian/raspbian/ jessie main non-free contrib
deb-src http://mirrors.aliyun.com/raspbian/raspbian/ jessie main non-free contrib
deb http://pipplware.pplware.pt/pipplware/dists/jessie/main/binary /
然后按ctrl+x,y,回車
在第一行前面加#號,然后復(fù)制下面兩行到末尾,ctrl + x 保存然后 y 確認(rèn)退出。

6:更新軟件包
sudo apt-get update:這一步是更新你的源列表,由于我們第五步,更新過安裝源,所以這步必須執(zhí)行。

sudo apt-get upgrade:此命令將本地已安裝的軟件與剛下載的軟件列表里對應(yīng)軟件進(jìn)行對比,如果你對新版本軟件的需求不是那么迫切,可以不執(zhí)行,當(dāng)然如果發(fā)現(xiàn)已安裝的軟件版本太低,就會提示你更新,y 確認(rèn)安裝。這個過程需要時間按比較久,我花了15分鐘左右。

sudo apt-get clean:徹底卸載安裝包。
7:安裝圖形界面
圖形界面,方便新手操作,我這里就給你具體鏈接地址
Raspberry Pi 樹莓派 Zero W 安裝Homeassistant-Homebridge教程及避坑指南
由于每個人的樹莓派硬件版本可能存在區(qū)別,可以參照安裝方式,但是不能全部復(fù)制,不然是無法安裝成功
HomeAssistant,大家切記切記。
8:安裝Samba和MQTT
Hassbian內(nèi)置了一個快速安裝Homeassistant需要的一些軟件的工具包叫hassbian-config,通過這個工具可以快速安裝MQTT、Samba等軟件,幫助我們快速實(shí)現(xiàn)Homeassistant的強(qiáng)大功能,安裝MQTT和Samba只需要簡單的兩個命令。
hassbian-config show? #查看支持快速安裝的軟件

sudo hassbian-config install samba??#快速安裝samba

看到右下角的的地址沒有,\\192.168.1.121\homeassistant

左邊是樹莓派的目錄,右邊是windows下的目錄,已經(jīng)同步完畢。
sudo hassbian-config install mosquitto:安裝MQTT服務(wù),進(jìn)行物聯(lián)網(wǎng)設(shè)備接入。安裝過程中提示輸入mqtt的帳號和密碼。

安裝MQTT的方式還可以這樣:

9:安裝libavahi-compat-libdnssd-dev軟件包(完整版Raspbian此時可能提示因依賴關(guān)系而出錯)
sudo apt-get -y install libavahi-compat-libdnssd-dev

10:確認(rèn)系統(tǒng)硬件版本
安裝node.js之前最重要的一步,由于各個版本的樹莓派硬件不同,樹莓派zero,樹莓派1,樹莓派2/2B,樹莓派3/3B。
如果沒確認(rèn)清楚,就會導(dǎo)致node.js出錯。
下面我說下幾種硬件的安裝方式:
(1)樹莓派zero是arm6l平臺,具體的安裝方式如下圖所示。

(2)樹莓派2也是arm6l平臺,具體實(shí)現(xiàn)方式更上面一樣
(3)那樹莓派2B是不是跟樹莓派2,樹莓派zero一樣,也是arm6l平臺呢,答案是不是的。
查看樹莓派的硬件平臺,使用命令 ? uname -a

(4)樹莓派3和樹莓派3B由于手上沒有硬件,這里說不再說明。
11:安裝node.js
安裝node.js的具體方式如下:
curl -sL https://deb.nodesource.com/setup_4.x | sudo -E bash -
sudo apt-get install -y nodejs
本來安裝node.js需要這兩個命令就行,但是網(wǎng)上有人說小米網(wǎng)關(guān)不支持setup_4x,所以我放棄了這兩條命令。
正確的參考命令如下:




build-essential的作用說明下

如果安裝不成功的話,請參照下面的文章。
查看node.js是否安裝成功,使用命令 node -v

12:安裝Homebridge,這個安裝arm7l平臺的,其他平臺是其他安裝方式。
armv7:
sudo npm install -g --unsafe-perm homebridge hap-nodejs node-gyp
cd /usr/lib/node_modules/homebridge/
cd /usr/lib/node_modules/hap-nodejs/node_modules/mdns
armv6的安裝方式:

HB 提供一行安裝指令:sudo npm install -g --unsafe-perm homebridge
也有人說采用這條命令:sudo npm install -g --unsafe-perm homebridge hap-nodejs node-gyp
至于node-gpy的作用,可以百度下查看問題。上面兩種方式都可以安裝。
如果出現(xiàn)安裝不成功的話,使用如下命令。


安裝完成后,建議大家直接輸入homebridge運(yùn)行一次 HB,以生成示例配置文件,然后 Ctrl + C 退出。

使用命令 sudo nano /home/pi/.homebridge/config.json

重新啟動homebridge,能運(yùn)行說明配置文件正確,不能運(yùn)行說明配置文件錯誤

解決方式:使用命令# ? sudo ?npm install homebridge
如果碰到 the ?requested accessory 'http' was not registered by any plugin
就使用命令#? sudo? npm install homebridge-http
安裝完畢之后在用homebridge命令,看是否正常啟動。

接著,安裝 Homeassistant-homebridge 插件,實(shí)現(xiàn)平臺聯(lián)動:
sudo?npm?install?-g?homebridge-homeassistant
日后插件更新,請使用下列命令:
sudo?npm?upgrade?-g?homebridge-homeassistant
如果是小米的網(wǎng)關(guān),還需要安裝相應(yīng)的協(xié)議。

13:讓homebridge開機(jī)自動啟動
方式一:比較麻煩的配置,可以參考一下配置說明。不過我估計(jì)很多人都可能看不懂是啥原理。
https://bbs.hassbian.com/forum.php?mod=viewthread&tid=1074&highlight=hass
#將homebridge設(shè)置成隨系統(tǒng)啟動
cd/
sudo useradd--system homebridge
sudo mkdir/var/homebridge
sudo cp ~/.homebridge/config.json/var/homebridge/
sudo cp-r ~/.homebridge/persist/var/homebridge
sudo chmod-R0777/var/homebridge
cd/etc/default
sudo nano homebridge
#將下面的內(nèi)容復(fù)制粘貼進(jìn)去,然后Ctrl+X,然后Y,回車,保存退出
HOMEBRIDGE_OPTS=-U/var/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)
# If you uncomment the following line, homebridge will log more
# You can display this via systemd's journalctl: journalctl -f -u homebridge
# DEBUG=*
#分界線
cd/etc/systemd/system
sudo nano homebridge.service
#將下面的內(nèi)容復(fù)制粘貼進(jìn)去,然后Ctrl+X,然后Y,回車,保存退出
[Unit]
Description=Node.js HomeKit Server
After=syslog.targetnetwork-online.target
[Service]
Type=simple
User=homebridge
EnvironmentFile=/etc/default/homebridge
ExecStart=/usr/lib/node_modules/homebridge/bin/homebridge $HOMEBRIDGE_OPTS
Restart=on-failure
RestartSec=10
KillMode=process
[Install]
WantedBy=multi-user.target
#分界線
cd/
sudo systemctl daemon-reload
sudo systemctl enable homebridge
sudo systemctl start homebridge
sudo systemctl status homebridge
方式二:采用init.d的方法
把 HomeBridge 服務(wù)加入到樹莓派的系統(tǒng)服務(wù)里。
首先我們要開啟 root 賬戶,首先在終端輸入:
sudopasswd?root
然后會提示你設(shè)置 root 賬戶密碼,第一次輸入之后還要確認(rèn)一次,一樣兩次輸入不會有任何字符顯示。輸入完畢之后,啟用 root 賬戶,輸入以下命令:
sudopasswd?--unlock?root
然后會提示報(bào)錯:passwd:?password?expiry?information?changed.,原因是新版的系統(tǒng)默認(rèn)禁止 ssh 登錄 root 賬戶,我們需要修改一下配置文件。在終端輸入以下命令:
sudonano?/etc/ssh/sshd_config
用 Ctrl + W 搜索「 PermitRootLogin 」,找到之后將PermitRootLogin without-password改成PermitRootLogin yes,然后按 Ctrl + O 保存,回車之后退出編輯器。
此時你會發(fā)現(xiàn)root登錄還是提示密碼錯誤,但是我自己用su - root 又可以切換到root用戶下,說明我的密碼沒問題。后來百度一下,發(fā)現(xiàn)是服務(wù)沒重啟。重啟服務(wù)就好,解決辦法如下圖。

配置到這里,只要在終端輸入homebridge就可以運(yùn)行了。但是關(guān)閉終端后就會關(guān)閉,而且萬一出現(xiàn)斷電重啟的情況,服務(wù)就會關(guān)閉。因此我們要配置一個開機(jī)啟動homekit的配置。homebrige的github頁面上推薦了三種方式,我采用里面最方便的方式init.d的方法。
首先從這里下載一個配置文件,并復(fù)制所有內(nèi)容。
下載地址:raw.githubusercontent.com/fhd/init-script-template/master/template
然后使用如下命令在init.d目錄下創(chuàng)建一個homebridge啟動的文件:
sudonano /etc/init.d/homebridge[進(jìn)入后粘貼上下載的配置文件的內(nèi)容]
修改文件內(nèi)容如下,不要忘記provide也要寫:

我發(fā)現(xiàn)網(wǎng)上很多人都設(shè)置之后,發(fā)現(xiàn)開機(jī)還是不能自啟。

需要注意的是:
(1)用戶名用pi登錄的話,user就是pi
(2)cmd 命令失效,網(wǎng)上很多人都是用 cmd="DEBUG=* /usr/local/bin/homebridge",
而我用的是cmd="DEBUG=* /usr/bin/homebridge"。
修改文件的權(quán)限:
sudochmod755/etc/init.d/homebridge
sudoupdate-rc.d homebridgedefaults
啟動:
sudo/etc/init.d/homebridge start
之后在關(guān)機(jī)重啟,homebridge就會自動啟動了。
開機(jī)以后查看日志文件

如果發(fā)現(xiàn)無法開機(jī)自動啟動,查看log日志就可以發(fā)現(xiàn)錯誤問題。
方式三:目前還沒看到,知道的朋友跟我簡信說下。
14:相關(guān)鏈接及參考(再次感謝諸大神)
【再更新】小米網(wǎng)關(guān)接入Homekit完整教程,聲控家中設(shè)備!
Home Assistant + 樹莓派:強(qiáng)大的智能家居系統(tǒng) · 安裝篇
首發(fā)威鋒!我們一起來玩HomeKit智能家居!用Siri來控制你的家用電器!
linux(ubuntu)下安裝nodejs并配置環(huán)境,(樹莓派2代ARM6處理器)
Raspberry Pi 樹莓派 Zero W 安裝Homeassistant-Homebridge教程及避坑指南
借助樹莓派與 HomeBridge ,將 YeeLight 彩光燈接入 Apple HomeKit | Matrix 精選