Back to homepage

用小爱同学和树莓派控制任何东西的开关

nios34于 February 19, 2021 发表在默认分类


使用点灯科技的 Blinker 控制所有东西的开关。

这篇文章不包含任何技术内容,但它绝对可以让你达成标题所说的内容。

必要准备

你应该准备以下的东西:

其它的嘛,应该没了。或许你还需要一部手机。:-)

注册账户

要使用点灯科技的产品当然要注册了。对于我们来说,它的使用是免费的!

首先,前往 diandeng.tech,下载手机应用。打开应用后,界面中间靠右有个用户注册按钮,点它注册。

注册完成后,登录。这个部分完成了。

注册设备

登录后,你发现右上角有个加号,点它。点击独立设备,选择你想要的接入方法。具体选择如下:

如果你的树莓派插了网线,选 WiFi 接入。如果你的树莓派连了 WiFi,选 WiFi 接入。如果你的树莓派用的是蓝牙,选蓝牙接入。简单易懂。

服务商建议选择阿里云(你应该也没别的选择)。现在你应该有了一个 Secret Key,将它记下来。它大概长这样:d941525a5af8

到这里,你就应该已经注册了一个名为“新的设备”的设备。你最好把它的名字改掉,因为现在如果你要打开它需要说这句话:“打开新的设备”。奇怪极了。

安装库

安装 python3 和 pip,使用下面的命令:

apt install -y python3 python3-pip

然后拉下 Blinker 的 Python 库:

git clone https://github.com/blinker-iot/blinker-py.git

在你因为 Github 的垃圾速度砸碎你的树莓派之前,你可以先试试把命令里的 github.com 换成 hub.fastgit.org。我假设你现在已经进入了那个库的目录,运行下面的命令安装依赖:

pip3 install -r requirements.txt

在你因为 PyPI 的垃圾速度砸碎你的树莓派之前,你可以试试在命令中加上 -i https://pypi.tuna.tsinghua.edu.cn/simple。这个命令一般来说,应该不能一次就运行成功。耐心一点,从它的报错信息,找到缺少的对应 lib。然后使用 apt 安装它们。
现在你完成了最难的部分,来让我们安装这个库:

python3 setup.py install

到这里,你已经安装完了所有所需的库。

配置脚本

建立一个文件,将下面的代码扔进去:

#!/usr/bin/env python
# -*- coding: utf-8 -*-

from Blinker.Blinker import Blinker, BlinkerButton, BlinkerNumber, BlinkerMIOT
from Blinker.BlinkerConfig import *
from Blinker.BlinkerDebug import *
from time import sleep
import controller

auth = 'd941525a5af8'

BLINKER_DEBUG.debugAll()

Blinker.mode('BLINKER_WIFI')
Blinker.miotType('BLINKER_MIOT_OUTLET')
Blinker.begin(auth)

def miotPowerState(state):
    ''' '''

    if state == "true":
        controller.turnon()
    elif state == "false":
        controller.turnoff()

    BlinkerMIOT.powerState(state)
    BlinkerMIOT.print()

def miotQuery(query):
    pass

BlinkerMIOT.attachPowerState(miotPowerState)
BlinkerMIOT.attachQuery(miotQuery)

if __name__ == '__main__':

    while True:
        Blinker.run()
        sleep(1)

聪明的你,应该留意到了 auth 变量需要修改。将它换成你的 Secret Key。
然后在同一个目录下,建立一个包含 turnon 函数和 turnoff 函数的文件名为 controller.py 文件。
turnon 和 turnoff 的作用想必不用多说。将你想让小爱同学调用的代码放进去。

运行脚本

python3 xxx.py

只要进程不退出,就说明没问题。

在米家导入那个设备

打开你的米家应用,点击“我的”。向下滑,应该能看到“其他平台设备”,进入。点击“添加”,找到“点灯科技”,登录你的帐号。
点击“点灯科技”的选项(或者也许你已经在里面了),你应该能看到你的设备名。如果没有,同步设备。

大功告成

如果你没有修改它的默认名字,你现在应该可以通过说“打开新的设备”来调用 turnon 函数了(反之亦然)。如果你把设备名修改成火狐浏览器,那就说“打开火狐浏览器”(这部分的源代码放在下面了)。

这是一个有用的例子

import os

def turnon():
    # 因为我使用 nios34 这个用户名登录,并以 root 权限运行脚本(这是必须的)。
    # 所以 firefox 这个命令以我的身份执行。
    os.system("sudo -u nios34 firefox")

def turnoff():
    # 鲨疯辽。
    os.system("sudo -u nios34 pkill firefox")

扩展链接