前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Siri 帮我开灯

Siri 帮我开灯

作者头像
用户1907613
发布2018-07-20 10:36:24
1.1K0
发布2018-07-20 10:36:24
举报
文章被收录于专栏:Android群英传

去年就说了,今年会做一些物联网的小东西,这里就先发一篇读者自己研究的文章,给大家起个头,其实现在物联网并不需要什么太高深的硬解知识或者技术了,只要大家感兴趣,都可以很方便的用一些手边很方便能买到的设备来玩转物联网~

先上图,不废话(图太大了,还是算了)

苹果自从发布了 HomeKit,可以方便的把家里的智能设备连接在一起,结合 Siri 可以说说话就让家里的设备运转起来。但是苹果没有认证的设备,我们还是没有办法使用的。好在有nfarina逆向了苹果的协议,做出了homebridge才使得众多智能设备接入 HomeKit 成为现实。

材料准备

  1. 树莓派(我手上的是树莓派 3B)
  2. Yeelight 灯一个(我用的是 Yeelight 台灯)
  3. iPhone 或者 iPad 一个,要求 iOS10 以上(这里我使用 iPad)

Yeelight 设置局域网控制(极客模式)

先说一下 Yeelight 的极客模式,这里极客模式和局域网控制是一个东西,我刚买的时候还是极客模式,几个月之后极客模式变成了局域网控制。我特地去问了客服,这两个是一个东西,客服截图上显示的还是极客模式,而我这里显示的却是局域网控制。如果你手上也是显示的是局域网控制,不要奇怪,当成一样的就好了,不影响使用。

我们先从灯的设置开始。先用手机下载一个 Yeelight 的 APP(应用商店里搜一下就有了),输入账号密码登录。登录之后需点击右上角的加号添加一台设备,选择你手上所使用的设备,我这里是台灯。下图是添加好的样子,添加过程中需要输入 WiFi 密码。

连接好之后,点击刚刚添加的台灯,进入控制页,选择右下角的三角形。

在弹出的页面中选择局域网控制(极客模式)

把局域网控制的开关给打开

Yeelight 台灯的设置就这些,没有了。

树莓派的配置

这里默认已经在树莓派上装好了系统,并且接上电源,连接了网络并且要和 Yeelight 灯在同一个局域网。没有的话参考树莓派入门。不用树莓派用其它的也是可以的,需要根据自己的系统进行相应的调整。

安装 Node.js

首先打开终端,通过ssh连接上树莓派,我们的操作都是在命令行下进行。Windows 可以使用 Xshell、PuTTY 等工具。

代码语言:javascript
复制
ssh pi@192.168.1.x #这里换成你自己的IP,回车后输入密码

接下来安装 Node.js

代码语言:javascript
复制
curl -sL https://deb.nodesource.com/setup_9.x | sudo -E bash -sudo apt-get install -y nodejs
node -v # 查看一下是否安装成功,成功会输出类似 v9.x.x

为 npm(node 的包管理工具,安装好 Node.js 就有) 配置淘宝源,在终端中输入vi .npmrc 按下i后输入下面内容

代码语言:javascript
复制
registry = https://registry.npm.taobao.org

输好后按下ESC(一般在 F1 旁边),输入:,接着按下wq回车。 不做这一步也是可以的,但是国内速度可能会稍慢。

安装 homebridge

装好了 Node.js 就可以安装 homebridge,homebridge 是一个把设备接入 HomeKit 的工具(类似桥梁的作用),没有它就不能使用没有经过苹果认证的设备。

代码语言:javascript
复制
sudo apt-get install libavahi-compat-libdnssd-dev 
sudo npm install -g --unsafe-perm homebridge hap-nodejs node-gyp

安装 Yeelight 插件

装好了 homebridge 还需要装上插件才能使用对应的智能设备,这里我使用的 Yeelight 台灯,所以还要安装 homebridge-yeelight 这个插件。

代码语言:javascript
复制
sudo npm install -g homebridge-yeelight

插件配置

插件装好了之后,我们需要配置一下让 homebridge 识别我们。

代码语言:javascript
复制
cd ~/.homebridge  # 没有的话手动创建,使用 mkdir ~/.homebridgevi config.json

打开文件之后按下i键,复制下面的内容到里面。

代码语言:javascript
复制
{
    "bridge": {
        "name": "Homebridge",
        "username": "CC:22:3D:E3:CE:30",
        "port": 51826,
        "pin": "031-45-154"
    },

    "platforms": [
        {
            "platform" : "yeelight",
            "name" : "yeelight"
        }
    ]}

写好之后按下ESC,输入:后再输入wq回车,该操作会保存文件并退出vi回到终端。 解释一下上面 bridge 中的配置

  • name 一个名称,在家庭 APP 上添加配件时显示,可以随意填写
  • username 一个唯一标识符,类似 MAC 地址,可以随意填写,格式不能变
  • port homebridge 的端口号,可以任意,但是需要没有被系统占用的
  • pin 密码,验证的时候用,可以任意,但是必须是 8 位数字,格式如上
  • platforms 里的东西是插件里规定的,就这么写吧,不用改。

启动 homebridge

在终端中输入下面命令,启动 homebridge

代码语言:javascript
复制
homebridge

会看到一个二维码和我们刚刚配置的 pin(图中红色方框中的),二维码暂时用不到,pin 会在接下来用到。到这里树莓派上的操作都完成了。

接入 HomeKit

打开 iPad,进入家庭 APP,选择添加配件。

在弹出的窗口中扫描终端显示的 pin(就是刚刚运行 homebridge 的地方),这一步通常是不能正确识别的,别担心后面可以手动输入。

来到这里估计估计你已经没有识别出 pin,没关系,我们手动输入 pin。

输入正确的 pin 后,可以看到 Homebridge 显示在 iPad 上了,点击 Homebridge 添加。这里的 Homebridge 就是我们在配置文件里设置的bridge.name

点击后会提示未认证配件,选择仍然添加。不添加怎么玩?

接下来的是一些设置,我们默认不动,选择下一步。

可以看到 Yeelight 灯出现了。在下图红框框中,我把名字改为台灯,这样方便 Siri 识别。改好之后点击右上角完成。

回到家庭 APP 主页,台灯已经显示出来。到这里已经已经成功的把 Yeelight 台灯接入 HomeKit。

开机自启动

照着上面的配置好了,也能够使用了。但是每次使用都要我手动运行homebridge太麻烦了,有没有开机自启动?有,接下来就来配置开机自启动。

先验证一下 homebridge 的路径

代码语言:javascript
复制
which homebridge

如果输出不是/usr/bin/homebridge,那么你需要把下面拷贝第 13 行的cmd="DEBUG=* /usr/bin/homebridge"改为cmd="DEBUG=* 刚刚输出的东西"

制作启动脚本

代码语言:javascript
复制
sudo vi /etc/init.d/homebridge

按下键盘上i,把下面的内容拷贝进去

代码语言:javascript
复制
#!/bin/sh### BEGIN INIT INFO# Provides: homebridge# Required-Start:    $network $remote_fs $syslog# Required-Stop:     $remote_fs $syslog# Default-Start:     2 3 4 5# Default-Stop:      0 1 6# Short-Description: Start daemon at boot time# Description:       Enable service provided by daemon.### END INIT INFOdir="/home/pi"cmd="DEBUG=* /usr/bin/homebridge"user="pi"name=`basename $0`
pid_file="/var/run/$name.pid"stdout_log="/var/log/$name.log"stderr_log="/var/log/$name.err"get_pid() {
    cat "$pid_file"}is_running() {
    [ -f "$pid_file" ] && ps -p `get_pid` > /dev/null 2>&1}case "$1" in
    start)    if is_running; then
        echo "Already started"
    else
        echo "Starting $name"
        cd "$dir"
        if [ -z "$user" ]; then
            sudo $cmd >> "$stdout_log" 2>> "$stderr_log" &        else
            sudo -u "$user" $cmd >> "$stdout_log" 2>> "$stderr_log" &        fi
        echo $! > "$pid_file"
        if ! is_running; then
            echo "Unable to start, see $stdout_log and $stderr_log"
            exit 1
        fi
    fi
    ;;
    stop)    if is_running; then
        echo -n "Stopping $name.."
        kill `get_pid`        for i in 1 2 3 4 5 6 7 8 9 10
        # for i in `seq 10`
        do
            if ! is_running; then
                break
            fi

            echo -n "."
            sleep 1
        done
        echo

        if is_running; then
            echo "Not stopped; may still be shutting down or shutdown may have failed"
            exit 1
        else
            echo "Stopped"
            if [ -f "$pid_file" ]; then
                rm "$pid_file"
            fi
        fi
    else
        echo "Not running"
    fi
    ;;
    restart)    $0 stop    if is_running; then
        echo "Unable to stop, will not attempt to start"
        exit 1
    fi
    $0 start
    ;;
    status)    if is_running; then
        echo "Running"
    else
        echo "Stopped"
        exit 1
    fi
    ;;
    *)    echo "Usage: $0 {start|stop|restart|status}"
    exit 1
    ;;esacexit 0

按下ESC,输入:后按下wq回车保存并退出编辑。

设置权限

保存之后我们还要给执行的文件权限,不然开机之后还是没法自动启动的。

代码语言:javascript
复制
sudo chmod 755 /etc/init.d/homebridgesudo update-rc.d homebridge defaults

重启之后 homebridge 就会自己运行。

参考

  1. homebridge
  2. homebridge_yeelight
  3. 用树莓派实现 HomeKit 控制台灯
  4. 借助树莓派与 HomeBridge ,将 YeeLight 彩光灯接入 Apple HomeKit
  5. 从米家到 HomeKit,你只需要一个树莓派
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2018-02-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 群英传 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 材料准备
  • Yeelight 设置局域网控制(极客模式)
  • 树莓派的配置
    • 安装 Node.js
      • 安装 homebridge
        • 安装 Yeelight 插件
          • 插件配置
            • 启动 homebridge
            • 接入 HomeKit
            • 开机自启动
              • 先验证一下 homebridge 的路径
                • 制作启动脚本
                  • 设置权限
                  • 参考
                  领券
                  问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档