本帖最后由 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---“套件中心”---“设置”---“套件来源”---点击“新增”
在弹出的界面中填入以下地址,并确定。
这样第三方套件地址就添加好了
安装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 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
复制代码
期间遇到的各种错误,及其解决方案:
未找到python执行文件,需要将你的python目录添加到path环境变量中,例如我这里装的是python,就要添加对应的执行文件到path里,可以通过直接在命令行中输入python检查是否配置成功
export PYTHON=/usr/bin/python2.7
复制代码
这个错误是网络问题,遇到这种情况重试即可,如果反复都不可以就试着清空缓存再试。始终不行的话你就要先研究下科学上网的方法,这里不做赘述。
清理缓存方法:
遇到最恶心的错误,相信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是不是就可以欢快的跑起来了呢??
我这里简单整理了一下:
博联科技 homebridge-broadlink-rm
小米网关 homebridge-aqara
论坛里的空气质量插件 homebridge-airnow
ip摄像头插件 homebridge-camera-ffmpeg
最后,由于我们的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。。。
最终效果