回答

收藏

[大赛作品提交] 基于HomeBridge的HomeKit & Siri智能家电树莓派桥接器

Raspberry Pi Raspberry Pi 7463 人阅读 | 0 人回复 | 2017-12-19

本帖最后由 ky123 于 2018-1-31 14:13 编辑

感谢E络盟官方提供的助赛基金。
1 首先说下什么是桥接器

飞利浦推出过一套很出名的HUE智能灯泡套装,价格巨高无比,如下图所示




三个灯泡+一个桥接器售价高达上千元
这里面的桥接器的主要作用就是负责连接灯泡
统一将灯泡进行连接,然后只有桥接器连接到路由器上
可以减轻路由器负载(路由器从好几个连接点变成一个桥接器连接


2 再说说什么是Homebridge


这是前苹果员工通过逆向工程将HomeKit反编译出来的,可以将一些不支持HomeKit的产品接入HomeKit中
HomeKit的智能家居产品都价格高昂,而HomeBridge可以运行在Linux路由器中
从而可以将一些支持型号的家电接入HomeKit中,也可以写入树莓派中,接入HomeKit中
(比如米家系列、博联等生态链的产品

3 项目需要准备的设备


1)树莓派
2)树莓派配套的相关电源、SD卡等
3)路由器,emmm,比如蒲公英路由器(滑稽
4)小米台灯

4 项目内容展示



Siri语音调节灯的亮度




5 项目实施


首先烧录树莓派镜像
这里不详细介绍了
有一个细节
有些树莓派的镜像默认情况下并不开启SSH
然而又没屏幕和鼠标键盘,就没法登陆树莓派
在烧写完镜像之后,打开SD卡(盘名应该是boot
右键新建个文本文件就行,然后改名为SSH
同时删掉.txt后缀,再插上网线就能正常SSH登录树莓派
  1. sudo apt-get update
  2. sudo apt-get upgrade
复制代码
首先更新一下软件
  1. sudo apt-get install nodejs
  2. sudo apt-get install build-essential
  3. sudo apt-get install libavahi-compat-libdnssd-dev
复制代码
然后安装一下nodejs和相关依赖包文件
  1. sudo npm install -g homebridge
  2. sudo npm install -g homebridge-aqara
复制代码
安装homebridge
  1. sudo npm install -g homebridge-yeelight
复制代码
安装yeelight,米家的灯都是基于yeelight的,所以这里要安装一下yeelight
  1. sudo vi /homebridge/config.json
复制代码
编辑一下配置文件
  1. {
  2.     "bridge":
  3.         {
  4.         "name": "RPIbridge",
  5.         "username": "CC:22:3D:E3:CE:30",
  6.         "port": 51826,
  7.         "pin": "031-45-154"
  8.           },
  9.    "platforms":
  10. [
  11.   {
  12.     "platform": "Aqara",
  13.     "sid": ["2e6f7c3c2b1a"],
  14.     "password": ["********"]
  15.   }
  16. ]
  17. }
复制代码
2e6f7c3c2b1a填路由器mac地址(不要写冒号
***********指的是路由器密码






打开yeelight手机app的第三方控制
不然
树莓派无法控制小米台灯

配置完成后运行一下试试

输入命令行homebridge



在putty中会显示二维码,扫一下就可以添加




完成后如上图
编辑一下名字,小米台灯即可




在底部控制中心可以拉出来控制面板




用Siri试一下能否正常运行




在putty中可以看到树莓派送达小米台灯的指令

到此已经可以正常运行了

下面配置一下开机自启动
不然每次都要输入homebridge命令
  1. sudo vi /etc/init.d/homebridge
复制代码
设置开机自启动脚本
  1. #!/bin/sh
  2. ### BEGIN INIT INFO
  3. # Provides: homebridge
  4. # Required-Start:    $network $remote_fs $syslog
  5. # Required-Stop:     $remote_fs $syslog
  6. # Default-Start:     2 3 4 5
  7. # Default-Stop:      0 1 6
  8. # Short-Description: Start daemon at boot time
  9. # Description:       Enable service provided by daemon.
  10. ### END INIT INFO

  11. dir="/home/pi"
  12. cmd="DEBUG=* /usr/bin/homebridge"
  13. user="pi"

  14. name=`basename $0`
  15. pid_file="/var/run/$name.pid"
  16. stdout_log="/var/log/$name.log"
  17. stderr_log="/var/log/$name.err"

  18. get_pid() {
  19.     cat "$pid_file"
  20. }

  21. is_running() {
  22.     [ -f "$pid_file" ] && ps `get_pid` > /dev/null 2>&1
  23. }

  24. case "$1" in
  25.     start)
  26.     if is_running; then
  27.         echo "Already started"
  28.     else
  29.         echo "Starting $name"
  30.         cd "$dir"
  31.         if [ -z "$user" ]; then
  32.             sudo $cmd >> "$stdout_log" 2>> "$stderr_log" &
  33.         else
  34.             sudo -u "$user" $cmd >> "$stdout_log" 2>> "$stderr_log" &
  35.         fi
  36.         echo $! > "$pid_file"
  37.         if ! is_running; then
  38.             echo "Unable to start, see $stdout_log and $stderr_log"
  39.             exit 1
  40.         fi
  41.     fi
  42.     ;;
  43.     stop)
  44.     if is_running; then
  45.         echo -n "Stopping $name.."
  46.         kill `get_pid`
  47.         for i in {1..10}
  48.         do
  49.             if ! is_running; then
  50.                 break
  51.             fi

  52.             echo -n "."
  53.             sleep 1
  54.         done
  55.         echo

  56.         if is_running; then
  57.             echo "Not stopped; may still be shutting down or shutdown may have failed"
  58.             exit 1
  59.         else
  60.             echo "Stopped"
  61.             if [ -f "$pid_file" ]; then
  62.                 rm "$pid_file"
  63.             fi
  64.         fi
  65.     else
  66.         echo "Not running"
  67.     fi
  68.     ;;
  69.     restart)
  70.     $0 stop
  71.     if is_running; then
  72.         echo "Unable to stop, will not attempt to start"
  73.         exit 1
  74.     fi
  75.     $0 start
  76.     ;;
  77.     status)
  78.     if is_running; then
  79.         echo "Running"
  80.     else
  81.         echo "Stopped"
  82.         exit 1
  83.     fi
  84.     ;;
  85.     *)
  86.     echo "Usage: $0 {start|stop|restart|status}"
  87.     exit 1
  88.     ;;
  89. esac

  90. exit 0
复制代码
创建完成后要给开机自启动脚本足够的权限
  1. sudo chmod 755 /etc/init.d/homebridge
  2. sudo update-rc.d homebridge defaults
复制代码
至此,支持开机自启动的“基于HomeBridge的HomeKit & Siri智能家电树莓派桥接器“项目便完成了

关注下面的标签,发现更多相似文章
分享到:
回复

使用道具 举报

您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /3 下一条