『瀚思彼岸』» 智能家居技术论坛

 找回密码
 立即注册
查看: 74918|回复: 140

树莓派安装Homebridge详细教程

  [复制链接]

2

主题

87

帖子

496

积分

论坛技术达人

积分
496
金钱
404
HASS币
0
发表于 2017-7-6 16:12:21 | 显示全部楼层 |阅读模式
       该贴的安装方法与老高的稍有不同,借鉴了老高的方法,如果用老高的方法可以成功安装的,完全可以忽略该贴。

  • 心路历程

        此部分对于安装无任何帮助,不感兴趣可以直接略过

        本人iOS coder一枚,多少还是有些编程基础,在看某大神的博客时,看到一篇关于智能家居的帖子,于是产生兴趣一发不可收拾。先是百度了什么是Homeassistant,Homebridge,然后百度了怎么安装这玩意,家里有台AC88U,刷了梅林,开始打算装到路由器里,毕竟都是Linux,应该没什么问题。网上有openwrt的安装方法,照猫画虎,还是碰到了一些问题,node的安装问题,libavahi-compat-libdnssd-dev库安装的问题等等,在此不细说,反正梅林装Homebridge失败了,感兴趣的朋友可以找我一起讨论。
        后来入了树莓派,按照老高的帖子一步一步来,刚开始apt-get update就出了问题,无论是原装源,还是阿里源,都会有问题。

updateError.png

        这期间试过老高发的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能安装上并打开。

         这里感谢@lidicn提供的思路,可能是ha装上了,但是服务有问题,用sudo systemctl restart [email protected]指令重启一下看看是否有用。

       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道路上的小白一个,欢迎大家一起讨论,一起进步!


      
        




updateError.png

评分

参与人数 4金钱 +26 收起 理由
panyhoo + 7 赠人玫瑰,手留余香!
smc326 + 5 谢谢分享!
Milo + 8 赞一个!
+ 6 很给力!

查看全部评分

回复

使用道具 举报

7

主题

57

帖子

536

积分

论坛技术达人

积分
536
金钱
479
HASS币
0
发表于 2017-7-6 16:16:10 | 显示全部楼层
共同加油
回复

使用道具 举报

30

主题

999

帖子

4117

积分

论坛元老

Rank: 8Rank: 8

积分
4117
金钱
3113
HASS币
0

活跃会员

发表于 2017-7-6 22:05:16 | 显示全部楼层
谢谢分享
回复

使用道具 举报

5

主题

223

帖子

2205

积分

金牌会员

Rank: 6Rank: 6

积分
2205
金钱
1982
HASS币
0
发表于 2017-7-7 14:19:26 | 显示全部楼层
多谢分享~最近也是升级node升级崩了,只好重新来过~
回复

使用道具 举报

220

主题

1284

帖子

7847

积分

超级版主

Rank: 8Rank: 8

积分
7847
金钱
6533
HASS币
86

教程狂人论坛风云人物突出贡献

发表于 2017-7-7 20:18:01 | 显示全部楼层
系统刷完之后,插到树莓派开机,等ha自动安装完毕,下面就是我个人的一些步骤。另外,上面我提到过重刷了无数次镜像,有时候刷完镜像重启起来等多长时间ha都安装不上,现象就是浏览器打不开192.168.x.x:8123,重启树莓派也不行,不知为何,估计是安装脚本可能碰到了网络问题失败了,这种情况我是采取了拔卡再次重刷,直到ha能安装上并打开。
应该不用重刷的,重启一下ha服务就行的
回复

使用道具 举报

2

主题

87

帖子

496

积分

论坛技术达人

积分
496
金钱
404
HASS币
0
 楼主| 发表于 2017-7-7 20:18:23 | 显示全部楼层
三点零六分 发表于 2017-7-7 14:19
多谢分享~最近也是升级node升级崩了,只好重新来过~

希望对你有帮助
回复

使用道具 举报

5

主题

223

帖子

2205

积分

金牌会员

Rank: 6Rank: 6

积分
2205
金钱
1982
HASS币
0
发表于 2017-7-8 00:21:51 | 显示全部楼层
Tozy 发表于 2017-7-7 20:18
希望对你有帮助

我搞定了~谢谢,我用的ha版本是1.23,node版本是7.10,结合你的教程,老高的教程,官网的教程,论坛里那个一键安装脚本里面的命令,我没运行第二次sudo apt-get update,走的是老高的步骤,不过你的教程给我很清晰的思路,就是node的路径这部分:
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 ,/usr/local/lib/ 你这部分和官网的一样,我的系统提示错误没有这个路径,所以我就选老高的步骤继续做下去了。
我安装node是:
curl -sL [url]https://deb.nodesource.com/setup_7.x[/url] | sudo -E bash  - 
sudo apt-get install -y nodejs

还有一个自己挖的坑是别用 su root 了以后运行homebridge,这样config.json 会在
/root/.homebridge/下生成config.json

因为蛮多插件好像都要node7.X以上的了,我就是为了装插件搞崩的
回复

使用道具 举报

2

主题

87

帖子

496

积分

论坛技术达人

积分
496
金钱
404
HASS币
0
 楼主| 发表于 2017-7-8 11:33:22 | 显示全部楼层
三点零六分 发表于 2017-7-8 00:21
我搞定了~谢谢,我用的ha版本是1.23,node版本是7.10,结合你的教程,老高的教程,官网的教程,论坛里那 ...

哦,那看来7xx的node也可以,我之前试过最新的8xx的node,安装hb的时候node gyp会卡死,个人感觉是node的问题,对你有帮助就说明帖子没白写
回复

使用道具 举报

2

主题

87

帖子

496

积分

论坛技术达人

积分
496
金钱
404
HASS币
0
 楼主| 发表于 2017-7-8 11:35:02 | 显示全部楼层
lidicn 发表于 2017-7-7 20:18
系统刷完之后,插到树莓派开机,等ha自动安装完毕,下面就是我个人的一些步骤。另外,上面我提到过重刷了无 ...

哦,也是,有可,能装上了,但是服务有问题,我更新下帖子
回复

使用道具 举报

220

主题

1284

帖子

7847

积分

超级版主

Rank: 8Rank: 8

积分
7847
金钱
6533
HASS币
86

教程狂人论坛风云人物突出贡献

发表于 2017-7-8 11:41:54 | 显示全部楼层
其实linux没你想象的脆弱,没那么容易崩溃要重装的
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2024-4-27 11:51 , Processed in 0.087131 second(s), 36 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表