25989406 发表于 2017-6-30 14:40:39

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

本帖最后由 25989406 于 2017-8-5 23:49 编辑

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


1.部署chroot参考树莓派的部署方案,首先群晖要能装软件
群晖安装 apt-get
登录到DSM---“套件中心”---“设置”---“套件来源”---点击“新增”
在弹出的界面中填入以下地址,并确定。http://packages.synocommunity.com/这样第三方套件地址就添加好了
安装debian chroothttps://github.com/SynoCommunity/spksrc/wiki/Debian-Chroot
ssh到启动自己的nas上,执行:
sudo /var/packages/debian-chroot/scripts/start-stop-status chroot
懂的人后面应该就不用我说了,哈哈。
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 contribdeb-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


安装pythonapt-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


期间遇到的各种错误,及其解决方案:
未找到python执行文件,需要将你的python目录添加到path环境变量中,例如我这里装的是python,就要添加对应的执行文件到path里,可以通过直接在命令行中输入python检查是否配置成功export PYTHON=/usr/bin/python2.7
这个错误是网络问题,遇到这种情况重试即可,如果反复都不可以就试着清空缓存再试。始终不行的话你就要先研究下科学上网的方法,这里不做赘述。清理缓存方法: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 (/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-airnowip摄像头插件 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

最后在群晖的计划任务里设置自启动时间,别人的文档都是配置开机启动,但我的群晖里好像没找到开机启动的选项,只是按时间配置了一个启动任务,哪位大侠知道如何开机启动希望不吝赐教,谢谢!!
再然后,我的问题来了,现在homebridge有没有声控的解决方案?google到可以通过homebridge完成脚本执行,而mac上的applescript可以执行音乐播放的功能,对于非mac的用户来说有什么好的声音播放方案吗?目前的思路是用homebridge的脚本开关,控制本地脚本执行nas的 audio station 的api,来控制nas通过dlna播放音乐,但找了半天audio station好像没有播放音乐的api。。。



详细文档参考于国外大神的方法,可自行查阅http://forum.micasaverde.com/index.php/topic,39783.0.htmlhttp://jensbouma.nl/blog/hello-siri-turn-the-lights-on-the-siri-for-iot-bridge-running-on-a-synology-nas/









hhccmm 发表于 2017-6-30 17:56:40

沙发学习:)

jscsmlxj 发表于 2017-6-30 23:19:43

这个牛逼的!

xinqinew 发表于 2017-7-2 02:52:45

一直很困扰,请写份详细的吧,ha和hb都需要,谢谢

onler 发表于 2017-7-3 08:47:08

这个牛逼的!!

guilao 发表于 2017-7-3 10:13:16

ds115j 强顶,折腾完Pi再来试这个方案

asunl 发表于 2017-7-3 10:28:33

谢谢,我有群晖,但无法装DOCKER,所以看到这篇文章,简直就是黑暗中的亮起了一盏明灯。

eric 发表于 2017-7-3 14:20:24

厉害了,对没有docker的朋友帮助很大!!!

dawn98 发表于 2017-7-3 15:24:23

对没有docker的朋友帮助很大,点个赞

llwenf 发表于 2017-7-4 21:31:05

216+ii表示有docker 也没弄好 :dizzy: 运行就自动关闭了不知道是不是华为路由器端口问题
页: [1] 2 3 4 5 6 7 8 9 10
查看完整版本: 国内首发-非docker群晖成功部署homebridge,思路及填过的坑