该贴的安装方法与老高的稍有不同,借鉴了 老高的方法 ,如果用老高的方法可以成功安装的,完全可以忽略该贴。
此部分对于安装无任何帮助,不感兴趣可以直接略过
本人iOS coder一枚,多少还是有些编程基础,在看某大神的博客时,看到一篇关于智能家居的帖子,于是产生兴趣一发不可收拾。先是百度了什么是Homeassistant,Homebridge,然后百度了怎么安装这玩意,家里有台AC88U,刷了梅林,开始打算装到路由器里,毕竟都是Linux,应该没什么问题。网上有openwrt的安装方法,照猫画虎,还是碰到了一些问题,node的安装问题,libavahi-compat-libdnssd-dev库安装的问题等等,在此不细说,反正梅林装Homebridge失败了,感兴趣的朋友可以找我一起讨论。
后来入了树莓派,按照老高的帖子一步一步来,刚开始apt-get update就出了问题,无论是原装源,还是阿里源,都会有问题。
这期间试过老高发的hassbian镜像,试过最新的hassbian镜像,试过官方的镜像,都有这个问题,应该不是镜像的问题,而是源的问题,各种重写镜像得出这个结论,十分无奈,也怪自己是Linux新手。apt-get update指令执行失败,会导致用老高的方法安装node失败,只能各种百度估狗,理解每一句代码是在干什么,有没有别的方法实现,最终一步一步搭了起来,看到siri能把灯关了,真是太欣慰了,各种心酸泪水。
但是,促进本文产生并非上面所说的,而是在准备汉化ha的时候,通过samba连接到树莓派只能读不能写,当然这部分也是百度出来怎么设置的,我是直接把根目录共享了。这要改ha,hb配置文件,每次都scp到本地,改完再scp回去,多麻烦,所以就百度samba为啥共享出来只能读不能写,有说是权限不够,我就按照提权的方法,直接执行了Linux自杀大法之一,sudo chmod 777 -R /,完了之后在根目录ls,看到显示的颜色有点不对,就懵逼了,执行sudo也不行了,后来百度,原来sudo chmod 777 -R / 是仅次于sudo rm -rf /的自杀大法,后来自己差点没笑出声来,想不到没中sudo rm -rf /这个招,中了权限的招。无奈,只能再次从头来过。后来在坛子里找到了samba的相关设置,真是好气,早点看到就不用自杀了。这次就记录一下过程中的每一步,也方便日后再“自杀”之后可以顺利复活。
写在最前面,如果按照楼主的安装办法,一定要完全按照楼主的步骤,不要一部分用楼主的,一部分用老高的,虽然过程很相似,但是有些细节是不同的,比如楼主的node路径是/usr/local/bin,不是/usr/bin等等。
装系统。树莓派的系统有很多,可以刷官方的系统,然后再装homeassistant等,也可以直接刷集成了ha的hassbian镜像。这里简单说下hassbian镜像,这个镜像集成了一些常用的工具,如make,python等等,就不用再去安装了,而所谓的集成homeassistant,其实也是开机后去安装的,并非完美集成,所以装了官方系统,再用脚本安装ha也是一样的。
系统刷完之后,插到树莓派开机,等ha自动安装完毕,下面就是我个人的一些步骤。另外,上面我提到过重刷了无数次镜像,有时候刷完镜像重启起来等多长时间ha都安装不上,现象就是浏览器打不开192.168.x.x:8123,重启树莓派也不行,不知为何,估计是安装脚本可能碰到了网络问题失败了,这种情况我是采取了拔卡再次重刷,直到ha能安装上并打开。
1. 设置时区
sudo dpkg-reconfigure tzdata
选最后一个None of the above回车,然后选择东八区 GMT-8 回车
2.自动连wifi
sudo nano /etc/wpa_supplicant/wpa_supplicant.conf
在文件底部添加:
network={
ssid="你的无线网络ID"
scan_ssid=1 // 如果你的无线是隐藏的,加这行,并删掉该句中文注释
psk="你无线网的密码"
}
ctrl + x 然后 y 退出。
3.修改源为阿里源
sudo nano /etc/apt/sources.list
在第一行前面加#号,然后复制下面两行到末尾
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
复制代码
ctrl + x 然后 y 退出。
4.更新
sudo apt-get update
sudo apt-get upgrade // 这里是 upgrade 不是 update
sudo apt-get update
第二次 update 应该会出我前面提到的错误
W: Failed to fetch http://archive.raspberrypi.org/debian/dists/jessie/main/binary-armhf/Packages Hash Sum mismatch
E: Some index files failed to download. They have been ignored, or old ones used instead.
如果没出,说明你用老高的帖子就能安装成功,可以移步 老高的帖子
5.建立Samba服务
sudo apt-get install -y samba
sudo smbpasswd -a pi
sudo mv /etc/samba/smb.conf /etc/samba/smb.conf.original // 备份原配置文件
sudo nano /etc/samba/smb.conf
将下面的内容,复制粘贴进去。这些内容的意思是,将/home/homeassistant/.homeassistant和/home/pi目录共享出去, 通过samba连接后, 目录下的文件可以直接打开编辑保存
[global]
netbios name = raspberrypi
server string = The Pi File Center
workgroup = WORKGROUP
hosts allow =
remote announce =
remote browse sync =
[HOME ASSISTANT]
path = /home/homeassistant/.homeassistant
comment = No comment
browsable = yes
read only = no
valid users =
writable = yes
guest ok = yes
public = yes
create mask = 0777
directory mask = 0777
force user = root
force create mode = 0777
force directory mode = 0777
hosts allow =
[PI]
path = /home/pi
comment = No comment
browsable = yes
read only = no
valid users =
writable = yes
guest ok = yes
public = yes
create mask = 0777
directory mask = 0777
force user = root
force create mode = 0777
force directory mode = 0777
hosts allow =
复制代码
ctrl + x 然后 y 退出。
然后执行指令重启samba服务
sudo service smbd restart
6.安装libavahi-compat-libdnssd-dev
sudo apt-get -y install libavahi-compat-libdnssd-dev
7.安装node,一定要用6xx版本,4xx8xx都不行
cd ~
wget https://nodejs.org/dist/latest-v6.x/node-v6.11.0-linux-armv7l.tar.xz
tar -xvf node-v6.11.0-linux-armv7l.tar.xz
cd node-v6.11.0-linux-armv7l.tar.xz
sudo cp -R * /usr/local/
这里多说一句,这种安装node的方法跟老高的不同,可以理解为pc上的绿色安装。树莓派3是armv7l的架构,所以下的armv7l的包,这个包是编译好的现成的文件,拿来就能用,在https://nodejs.org/dist/ 这里可以看到有很多架构的包。如何识别自己是什么架构可以通过 uname -a 查看。 网上安装node还有直接把解压的出来的包复制到/usr/local/node的(并非楼主提供的/usr/local/),然后在把/usr/local/node/bin添加到环境变量,这种方法我也试了,可以看到node的版本和npm的版本,也能执行相关指令,但是就是安装Homebridge失败,所以还是不要用这种方式了,具体失败原因我也没时间去找。
8.安装homebridge
sudo npm install -g --unsafe-perm homebridge hap-nodejs node-gyp
cd /usr/local/lib/node_modules/homebridge
sudo npm install --unsafe-perm bignum
cd /usr/local/lib/node_modules/hap-nodejs/node_modules/mdns
sudo node-gyp BUILDTYPE=Release rebuild
cd /
sudo npm install -g homebridge-homeassistant // 安装ha插件
homebridge // 执行一次,应该能看到homebridge可以起来了
键盘输入Ctrl+C停止homebridge运行
9.修改homebridge配置文件
sudo nano /home/pi/.homebridge/config.json
复制以下内容
{
"bridge": {
"name": "Raspi's Homebridge",
"username": "CC:22:3D:E3:CE:30",
"port": 51926,
"pin": "321-89-465"
},
"platforms": [
{
"platform": "HomeAssistant",
"name": "HomeAssistant",
"host": "http://192.168.10.147:8123",
"password": "raspberry",
"supported_types": ["fan", "garage_door", "input_boolean", "light", "lock", "media_player", "rollershutter", "scene", "switch"]
}
]
}
复制代码
ctrl + x 然后 y 退出。
说明如下
{
"bridge": {
"name": "Raspi's Homebridge", // bridge的名字,会出现在Home app上
"username": "CC:22:3D:E3:CE:30", // 这个MAC地址,可以修改成自己树莓派的MAC地址
"port": 51926, // 通讯端口,可以修改,小于65535,不要跟其他冲突
"pin": "321-89-465" // PIN码,任意修改,格式是XXX-XX-XXX,只能是数字
},
"platforms": [
{
"platform": "HomeAssistant", // 加载的插件名称,我们上面装的homebridge-homeassistant ,如果装了其他插件,看插件的使用说明,platform应该填什么
"name": "HomeAssistant", // 这个不用改
"host": "http://192.168.10.147:8123", // 其中的192.168.10.147是你的树莓派的局域网IP地址
"password": "raspberry", // 你树莓派的登录密码
"supported_types": ["fan", "garage_door", "input_boolean", "light", "lock", "media_player", "rollershutter", "scene", "switch"] // 这个是你ha都支持哪些东西,根据需要添加修改
}
// 如果装了其他插件,下面这样写
,// 逗号分开两个{}中的内容,一定要有,原因可以百度json格式,不细说
{
"platform": “XXXXX”, // 根据插件填写
… // 根据插件填写,不同插件填写方式可能不同
}
]
}
10.将homebridge设置成随系统启动
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 -R 0777 /var/homebridge
cd /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 systemd's journalctl: journalctl -f -u homebridge
# DEBUG=*
复制代码
ctrl + x 然后 y 退出。
cd /etc/systemd/system
sudo nano homebridge.service
将下面的内容复制粘贴进去
[Unit]
Description=Node.js HomeKit Server
After=syslog.target network-online.target
[Service]
Type=simple
User=homebridge
EnvironmentFile=/etc/default/homebridge
ExecStart=/usr/local/lib/node_modules/homebridge/bin/homebridge $HOMEBRIDGE_OPTS
Restart=on-failure
RestartSec=10
KillMode=process
[Install]
WantedBy=multi-user.target
复制代码
ctrl + x 然后 y 退出。
cd /
sudo systemctl daemon-reload
sudo systemctl enable homebridge
sudo systemctl start homebridge
sudo systemctl status homebridge // 查看Homebridge运行状态
sudo reboot
11.其他
你想返回去修改PIN码,MAC地址等等参数,可以按以下命令行来做
sudo systemctl stop homebridge // 停止homebridge运行
sudo nano /var/homebridge/config.json // 编辑配置文件
sudo reboot // 重启树莓派
如果你的树莓派可以成功跑起来Homebridge,并且能在Home app中看到并连接,那么该贴的目的就达到了,后续可以参考下面的帖子
1、【基础教程】HomeAssistant的设备ID及汉化!
2、【基础教程】HomeAssistant的分组分页!
该贴是楼主先码字,再编辑的,编辑的时候本想把所有指令代码都弄成可复制的形式,但是后来发现排版也不好看,工作量也十分巨大,还是放弃了,辛苦读者手选复制粘贴了。
如果下不到帖子中6xx的node,可以朝楼主要,如果人多会考虑传网盘。
楼主也是homeassistant道路上的小白一个,欢迎大家一起讨论,一起进步!