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

 找回密码
 立即注册
查看: 54777|回复: 118

国内首发-非docker群晖成功部署homebridge,思路及填过的坑

  [复制链接]

26

主题

1190

帖子

5382

积分

元老级技术达人

积分
5382
金钱
4167
HASS币
100
发表于 2017-6-30 14:40:39 | 显示全部楼层 |阅读模式
本帖最后由 25989406 于 2017-8-5 23:49 编辑

昨天刚部署好,还在兴奋之余,因为国内没有相关文档,所以上来发一篇。
另外说一句我用的是群晖ds261j, 同款的苦于没有docker的同学们,激不激动?
1.部署chroot
2.安装基础软件
3.安装homebridge及相关插件
4.调试插件配置
5.群晖自启动
有问题请留言,我尽量解答。着急的话,微博联系 http://weibo.com/1147593092/profile


1.部署chroot
参考树莓派的部署方案,首先群晖要能装软件

群晖安装 apt-get

登录到DSM---“套件中心”---“设置”---“套件来源”---点击“新增”
hb1.png
在弹出的界面中填入以下地址,并确定。
这样第三方套件地址就添加好了
hb2.png
安装debian chroot

ssh到启动自己的nas上,执行:
sudo /var/packages/debian-chroot/scripts/start-stop-status chroot

hb3.png
懂的人后面应该就不用我说了,哈哈。

2.chroot装好后那我们就可以正式的安装homebridge基础 环境了
安装基础依赖的软件,另外由于我们是通过chroot环境安装基础软件,所以后续所有安装执行操作都要在chroot环境下完成,启动脚本除外,执行下面的命令就可以切换到root环境:


sudo /var/packages/debian-chroot/scripts/start-stop-status chroot

切换到root后执行基础软件的安装
打开更新源文件后,可看到第一行中的 deb 开头的指向为 raspberry 更新源,由于是国外的更新源,会影响到更新的速度,所以在这里首先要把它屏蔽掉,在deb 前面输入一个 # 号即可。在 nano 编辑器中,不能使用鼠标,但可以使用键盘上的光标键移动至想要修改的位置。
nano /etc/apt/sources.list

在 nano 编辑器中,把光标移动到最后,可按下回车重新启一行,然后把以下内容粘贴复制进去。
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
在 nano 编辑器中,按下鼠标右键即可把复制的内容粘贴进去。随后请按下键盘上的 Ctrol+X 组合键,再输入 Y 键,最后按下回车键保存并退出即可。

apt-get update
apt-get install libavahi-compat-libdnssd-dev
apt-get install avahi-daemon avahi-discover libnss-mdns libavahi-compat-libdnssd-dev
apt-get install update-alternatives
apt-get install git make
apt-get install g++

安装nodejs,这里我是下载的最新的nodejs 8.0.0,由于我的系统是群晖armv7,所以安装下面的版本,其他版本请在node官网上找对应版本。


wget https://nodejs.org/dist/v8.0.0/node-v8.0.0-linux-armv7l.tar.gz
tar xJvf node-v8.0.0-linux-armv7l.tar.gz
sudo mkdir -p /volume1/@appstore/debian-chroot/var/chroottarget/opt/node/
sudo mv node-v8.0.0-linux-armv7l/* /volume1/@appstore/debian-chroot/var/chroottarget/opt/node/
sudo /var/packages/debian-chroot/scripts/start-stop-status chroot
update-alternatives --install "/usr/bin/node" "node" "/opt/node/bin/node" 1
update-alternatives --install "/usr/bin/npm" "npm" "/opt/node/bin/npm" 1


安装python
apt-get install python2.7
export PYTHON=/usr/bin/python2.7

3.安装homebridge


npm install -g --unsafe-perm hap-nodejs
npm install -g --unsafe-perm node-gyp
npm install -g --unsafe-perm homebridge


期间遇到的各种错误,及其解决方案:

hb5.png
未找到python执行文件,需要将你的python目录添加到path环境变量中,例如我这里装的是python,就要添加对应的执行文件到path里,可以通过直接在命令行中输入python检查是否配置成功
export PYTHON=/usr/bin/python2.7

hb4.png
这个错误是网络问题,遇到这种情况重试即可,如果反复都不可以就试着清空缓存再试。始终不行的话你就要先研究下科学上网的方法,这里不做赘述。
清理缓存方法:
npm cache clean -f

遇到最恶心的错误,相信50%的人在完成上面复杂的工序之后,开心的执行homebridge命令会遇到下面的问题,我吭哧吭哧研究了2个礼拜,几乎翻遍的github,之前一直没找到方法,甚至被逼到换windows平台去部署homebridge,但最后还是卡在了这个坑爹的错误上!!!what a fuck!!! 但好在功夫不负有心人,终于研究明白这个错误了,请往下看。
Scan this code with your HomeKit App on your iOS device to pair with Homebridge:
┌────────────┐
│ 031-45-154        |
└────────────┘
/usr/lib/node_modules/homebridge/node_modules/mdns/lib/advertisement.js:56 dns_sd.DNSServiceRegister(self.serviceRef, flags, ifaceIdx, name, ^ Error: dns service error: unknown at new Advertisement
(/usr/lib/node_modules/homebridge/node_modules/mdns/lib/advertisement.js:56:10) at Object.create [as createAdvertisement] (/usr/lib/node_modules/homebridge/node_modules/mdns/lib/advertisement.js:64:10) at Advertiser.startAdvertising (/usr/lib/node_modules/homebridge/node_modules/hap-nodejs/lib/Advertiser.js:43:30) at Bridge.Accessory._onListening (/usr/lib/node_modules/homebridge/node_modules/hap-nodejs/lib/Accessory.js:555:20)

首先遇到错检查一下这几个包是否都已经正确安装
apt-get install avahi-daemon avahi-discover libnss-mdns libavahi-compat-libdnssd-dev

上面那个错误的主要就是因为dbus-daemon、dbus、avahi-daemon这三个个东西没启动对,解决思路是启动homebridge前吧这三个进程都重启,对原因就是这么简单!


dbus-daemon --system
/etc/init.d/dbus restart
service avahi-daemon start
启动homebridge前重启上面进程,homebridge是不是就可以欢快的跑起来了呢??

4.常用插件
我这里简单整理了一下:
博联科技 homebridge-broadlink-rm
小米网关 homebridge-aqara
论坛里的空气质量插件 homebridge-airnow
ip摄像头插件 homebridge-camera-ffmpeg

5.群晖后台启动

最后,由于我们的homebridge是跑在nas上的,怎么让他在后台启动呢?

chroot环境下的启动脚本

#!/bin/bash
# LANCEMENT DES SERVICES DBUS, AVAHI, HOMEBRIDGE
# RUNNING DBUS, AVAHI AND HOMEBRIDGE SERVICES
export N_PREFIX="$HOME/n"; [[ :$PATH: == *":$N_PREFIX/bin:"* ]] || PATH+=":$N_PREFIX/bin"
rm -r /var/run && rm -r /var/lock && ln -s /run /var/run && ln -s /run/lock /var/lock && rm /run/dbus/*
dbus-daemon --system
/etc/init.d/dbus restart
service avahi-daemon stop
service avahi-daemon start

/root/n/lib/node_modules/homebridge/bin/homebridge


NAS用户态下的启动脚本


#!/bin/sh
## Put this file in your path homebridge.sh
case "$1" in

stop)
echo "Stop Homebridge …"
pkill -f homebridge
;;

start)
nohup chroot /usr/local/debian-chroot/var/chroottarget su - root -c "/root/.homebridge/run.sh" >>/volume1/1.log 2>>/volume1/2.log &
;;

restart)
$0 stop
sleep 1
$0 start
;;

status)
ps | grep homebridge
return $?
;;

*)
echo "usage: $0 { start | stop | restart | status}" >&2
exit 1
;;

esac
hb7.png
hb8.png
hb9.png
最后在群晖的计划任务里设置自启动时间,别人的文档都是配置开机启动,但我的群晖里好像没找到开机启动的选项,只是按时间配置了一个启动任务,哪位大侠知道如何开机启动希望不吝赐教,谢谢!!

再然后,我的问题来了,现在homebridge有没有声控的解决方案?
google到可以通过homebridge完成脚本执行,
而mac上的applescript可以执行音乐播放的功能,对于非mac的用户来说有什么好的声音播放方案吗?
目前的思路是用homebridge的脚本开关,控制本地脚本执行nas的 audio station 的api,来控制nas通过dlna播放音乐,但找了半天audio station好像没有播放音乐的api。。。







最终效果

最终效果






评分

参与人数 1金钱 +5 收起 理由
xinqinew + 5 感激万分!

查看全部评分

回复

使用道具 举报

1

主题

39

帖子

213

积分

论坛积极会员

积分
213
金钱
174
HASS币
0
发表于 2017-6-30 17:56:40 | 显示全部楼层
沙发学习
回复

使用道具 举报

8

主题

219

帖子

3286

积分

论坛元老

Rank: 8Rank: 8

积分
3286
金钱
3067
HASS币
0
发表于 2017-6-30 23:19:43 | 显示全部楼层
这个牛逼的!
回复

使用道具 举报

3

主题

219

帖子

930

积分

高级会员

Rank: 4

积分
930
金钱
711
HASS币
0
发表于 2017-7-2 02:52:45 | 显示全部楼层
一直很困扰,请写份详细的吧,ha和hb都需要,谢谢
回复

使用道具 举报

0

主题

162

帖子

693

积分

高级会员

Rank: 4

积分
693
金钱
531
HASS币
0
发表于 2017-7-3 08:47:08 | 显示全部楼层
这个牛逼的!!
回复

使用道具 举报

3

主题

72

帖子

539

积分

高级会员

Rank: 4

积分
539
金钱
467
HASS币
0
发表于 2017-7-3 10:13:16 | 显示全部楼层
ds115j 强顶,折腾完Pi再来试这个方案
回复

使用道具 举报

0

主题

11

帖子

130

积分

注册会员

Rank: 2

积分
130
金钱
119
HASS币
0
发表于 2017-7-3 10:28:33 | 显示全部楼层
谢谢,我有群晖,但无法装DOCKER,所以看到这篇文章,简直就是黑暗中的亮起了一盏明灯。
回复

使用道具 举报

24

主题

604

帖子

3400

积分

元老级技术达人

积分
3400
金钱
2791
HASS币
0

卓越贡献

发表于 2017-7-3 14:20:24 | 显示全部楼层
厉害了,对没有docker的朋友帮助很大!!!
回复

使用道具 举报

2

主题

303

帖子

1675

积分

金牌会员

Rank: 6Rank: 6

积分
1675
金钱
1372
HASS币
0
发表于 2017-7-3 15:24:23 | 显示全部楼层
对没有docker的朋友帮助很大,点个赞
回复

使用道具 举报

1

主题

7

帖子

41

积分

新手上路

Rank: 1

积分
41
金钱
34
HASS币
0
发表于 2017-7-4 21:31:05 | 显示全部楼层
216+ii表示有docker 也没弄好 运行就自动关闭了  不知道是不是华为路由器端口问题
回复

使用道具 举报

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

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2024-4-26 02:53 , Processed in 0.120997 second(s), 36 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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