树莓派2B+Hassbian+Homebridge+Homekit(环境搭建)

由于有位楼主跟我说引用了他的文章,我这里说明下,引用的文章会很多,碰到的问题也多,文末有各路大神的文章,需要的自己去看。我的目标:用Ipad中的HomeKit智能家居!用Siri来控制你的家用电器,最近苹果的智能家居平台比较火热,什么值得买平台以及少数派报告都有比较多的文章介绍。目前自己手上的硬件有Ipad,树莓派2B,nodemcu(esp8266),DTH11 温湿度传感器等等。刚好Home Assistant是一个运行在Python 3的开源家庭自动化平台。它可以追踪、控制你家里的所有设备,并且能实现自动化控制。先用图描述下几者关系,方便理清思路。


树莓派上运行的就是HomeAssistant

下面说下具体的安装实现过程,安装过程中的软件我会上传到百度云分享给大家。

1:格式化TF卡


格式化TF卡

2:刻录hassbian镜像,使用的是etcher刻录软件

刻录镜像

查看U盘,发现容量只有40M了,不用担心,只是启动文件。


树莓派启动文件


启动文件目录

3:上电运行

将烧写好的TF卡插到树莓派上,插上网线,上电启动。


上电启动完成

上电完成之后,提示用户名登录,用户名:pi      密码:raspberry


putty已经可以SSH登陆

4:查看hassbian是否安装成功

打开谷歌浏览器(切记一定用谷歌浏览器,360浏览器是打不开的),浏览器输入:192.168.1.121( 树莓派的IP):8123


homeassistant安装成功

出现这个界面,说明hassbian已经安装成功,并且服务已经自动启动。

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,回车

在第一行前面加#号,然后复制下面两行到末尾,ctrl + x 保存然后 y 确认退出。


编辑文件

6:更新软件包

sudo apt-get update:这一步是更新你的源列表,由于我们第五步,更新过安装源,所以这步必须执行。

执行更换自己的安装源

sudo apt-get upgrade:此命令将本地已安装的软件与刚下载的软件列表里对应软件进行对比,如果你对新版本软件的需求不是那么迫切,可以不执行,当然如果发现已安装的软件版本太低,就会提示你更新,y 确认安装。这个过程需要时间按比较久,我花了15分钟左右。


更新自己的软件包


sudo apt-get clean:彻底卸载安装包。

7:安装图形界面

图形界面,方便新手操作,我这里就给你具体链接地址

Raspberry Pi 树莓派 Zero W 安装Homeassistant-Homebridge教程及避坑指南

由于每个人的树莓派硬件版本可能存在区别,可以参照安装方式,但是不能全部复制,不然是无法安装成功

HomeAssistant,大家切记切记。

8:安装Samba和MQTT

Hassbian内置了一个快速安装Homeassistant需要的一些软件的工具包叫hassbian-config,通过这个工具可以快速安装MQTT、Samba等软件,帮助我们快速实现Homeassistant的强大功能,安装MQTT和Samba只需要简单的两个命令。

hassbian-config show  #查看支持快速安装的软件


可以安装的插件

sudo hassbian-config install samba  #快速安装samba


安装Samba完毕

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


Samba同步成功

左边是树莓派的目录,右边是windows下的目录,已经同步完毕。

sudo hassbian-config install mosquitto:安装MQTT服务,进行物联网设备接入。安装过程中提示输入mqtt的帐号和密码。

我也是输入帐号pi密码raspberry

安装MQTT的方式还可以这样:

安装MQTT方式2

9:安装libavahi-compat-libdnssd-dev软件包(完整版Raspbian此时可能提示因依赖关系而出错)

sudo apt-get -y install libavahi-compat-libdnssd-dev


安装更新成功

10:确认系统硬件版本

安装node.js之前最重要的一步,由于各个版本的树莓派硬件不同,树莓派zero,树莓派1,树莓派2/2B,树莓派3/3B。

如果没确认清楚,就会导致node.js出错。

下面我说下几种硬件的安装方式:

(1)树莓派zero是arm6l平台,具体的安装方式如下图所示。

树莓派zero的安装方式

(2)树莓派2也是arm6l平台,具体实现方式更上面一样

(3)那树莓派2B是不是跟树莓派2,树莓派zero一样,也是arm6l平台呢,答案是不是的。

查看树莓派的硬件平台,使用命令   uname -a


树莓派2B硬件平台

(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需要这两个命令就行,但是网上有人说小米网关不支持setup_4x,所以我放弃了这两条命令。

正确的参考命令如下:

安装node.js命令
安装setup_6x
安装node.js完成


安装build-essential

build-essential的作用说明下


如果安装不成功的话,请参照下面的文章。

重装Ubuntu 14.04后使用apt-get安装build-essential(即sudo apt-get install build-essential)时出现包依赖项问题的解决方法

查看node.js是否安装成功,使用命令 node -v

查看node

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的安装方式:

armv6安装方式

HB 提供一行安装指令:sudo npm install -g --unsafe-perm homebridge

也有人说采用这条命令:sudo npm install -g --unsafe-perm homebridge hap-nodejs node-gyp

至于node-gpy的作用,可以百度下查看问题。上面两种方式都可以安装。

如果出现安装不成功的话,使用如下命令。

手动安装


安装Homebridge

安装完成后,建议大家直接输入homebridge运行一次 HB,以生成示例配置文件,然后 Ctrl + C 退出。


运行bridge之后,发现未找到配置文件

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

编辑配置文件

重新启动homebridge,能运行说明配置文件正确,不能运行说明配置文件错误


配置文件错误

解决方式:使用命令#   sudo  npm install homebridge

如果碰到 the  requested accessory 'http' was not registered by any plugin

就使用命令#  sudo  npm install homebridge-http

安装完毕之后在用homebridge命令,看是否正常启动。


接着,安装 Homeassistant-homebridge 插件,实现平台联动:

sudo npm install -g homebridge-homeassistant

日后插件更新,请使用下列命令:

sudo npm upgrade -g homebridge-homeassistant

如果是小米的网关,还需要安装相应的协议。

小米网关协议安装

13:让homebridge开机自动启动

方式一:比较麻烦的配置,可以参考一下配置说明。不过我估计很多人都可能看不懂是啥原理。

https://bbs.hassbian.com/forum.php?mod=viewthread&tid=1074&highlight=hass

#将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-R0777/var/homebridge

cd/etc/default

sudo nano homebridge

#将下面的内容复制粘贴进去,然后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

#将下面的内容复制粘贴进去,然后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 服务加入到树莓派的系统服务里。

首先我们要开启 root 账户,首先在终端输入:

sudopasswd root

然后会提示你设置 root 账户密码,第一次输入之后还要确认一次,一样两次输入不会有任何字符显示。输入完毕之后,启用 root 账户,输入以下命令:

sudopasswd --unlock root

然后会提示报错:passwd: password expiry information changed.,原因是新版的系统默认禁止 ssh 登录 root 账户,我们需要修改一下配置文件。在终端输入以下命令:

sudonano /etc/ssh/sshd_config

用 Ctrl + W 搜索「 PermitRootLogin 」,找到之后将PermitRootLogin without-password改成PermitRootLogin yes,然后按 Ctrl + O 保存,回车之后退出编辑器。

此时你会发现root登录还是提示密码错误,但是我自己用su - root 又可以切换到root用户下,说明我的密码没问题。后来百度一下,发现是服务没重启。重启服务就好,解决办法如下图。

重启sshd服务

配置到这里,只要在终端输入homebridge就可以运行了。但是关闭终端后就会关闭,而且万一出现断电重启的情况,服务就会关闭。因此我们要配置一个开机启动homekit的配置。homebrige的github页面上推荐了三种方式,我采用里面最方便的方式init.d的方法。

首先从这里下载一个配置文件,并复制所有内容。

下载地址:raw.githubusercontent.com/fhd/init-script-template/master/template

然后使用如下命令在init.d目录下创建一个homebridge启动的文件:

sudonano /etc/init.d/homebridge[进入后粘贴上下载的配置文件的内容]

修改文件内容如下,不要忘记provide也要写:

需要修改的地方

我发现网上很多人都设置之后,发现开机还是不能自启。

还会出现这样的错误

需要注意的是:

(1)用户名用pi登录的话,user就是pi

(2)cmd 命令失效,网上很多人都是用 cmd="DEBUG=* /usr/local/bin/homebridge",

而我用的是cmd="DEBUG=* /usr/bin/homebridge"。

修改文件的权限:

sudochmod755/etc/init.d/homebridge

sudoupdate-rc.d homebridgedefaults

启动:

sudo/etc/init.d/homebridge start

之后在关机重启,homebridge就会自动启动了。

开机以后查看日志文件

开机启动正常的日志文件

如果发现无法开机自动启动,查看log日志就可以发现错误问题。

方式三:目前还没看到,知道的朋友跟我简信说下。

14:相关链接及参考(再次感谢诸大神)

树莓派打造家庭中枢教程(完整版)

【再更新】小米网关接入Homekit完整教程,声控家中设备!

Home Assistant + 树莓派:强大的智能家居系统 · 安装篇

首发威锋!我们一起来玩HomeKit智能家居!用Siri来控制你的家用电器!

linux(ubuntu)下安装nodejs并配置环境,(树莓派2代ARM6处理器)

hassbian镜像地址

新手:树莓派快速安装HomeAssistant

Raspberry Pi 树莓派 Zero W 安装Homeassistant-Homebridge教程及避坑指南

node.js安装版本

homebridge自启动出现问题

树莓派2 HomeKit

小白贴-Hass.io安装、sonoff、黑豆接入HA

借助树莓派与 HomeBridge ,将 YeeLight 彩光灯接入 Apple HomeKit | Matrix 精选

[不定期更新]Homekit智能家庭实现计划

开启自启动homebridge,不过好像不行,待解决

推荐阅读更多精彩内容