使用 Windows 任务计划程序控制米家智能设备

一、场景描述

上床下桌,桌上有一电脑,电脑旁边有灯。

需求:

  1. 当我出门后自动关灯;

  2. 当我坐在桌前自动开灯;

  3. 当我上床自动关灯。

其中 1 可以由米家的现有功能实现:

自动化 ---> 触发条件 ---> 手机联动 ---> 断开 WLAN(宿舍的 WiFi)---> 执行动作 ---> 设备 ---> 灯泡 ---> 关灯

通常 2、3 需要传感器的参与才能实现,但我在不在桌前和开不开电脑是强关联的,所以可以做下面的关联:

  • 在桌前 ---> 电脑解锁 ---> 开灯
  • 离开 ---> 电脑锁定 ---> 关灯

电脑在一段时间未操作是会自动锁定的(长短可以自定义),等于实现了上床自动关灯(上床了自然无法操作电脑)。

Windows 有一个任务计划程序(Task Scheduler),使用它调用米家的 API 控制智能设备就可以实现上述的联动操作。理论上具备了实现的可能性。

二、实现过程

(一)使用米家 API 控制台灯

使用小米 IoT 控制端 API 需要申请开发者账户,个人开发者目前无法申请。

但得益于 Do1e/mijia-api 的存在,开发者账户也不是问题了。

  1. 按照 Do1e/mijia-api 的 README 获取登录信息和设备信息。

  2. 在米家 APP 设置两个场景(手动控制):

  1. 新建两个 Python 脚本调用 API 开/关灯:
1
2
3
4
# light_turn_on.py
from apis import *

runScene('开灯')
1
2
3
4
# light_turn_off.py
from apis import *

runScene('关灯')

可以在终端测试是否有效。

(二)创建 Windows 任务计划

  1. 启动任务计划程序,创建任务;

  2. 设置名称;

  1. 设置触发器;
  • 开始任务:工作站解锁时
  • 选中当前用户

  1. 设置操作;
  • 操作:启动程序
  • 程序或脚本:Python 解释器的路径,如:
1
"C:\Users\XINYA\AppData\Local\Microsoft\WindowsApps\pythonw3.12.exe"
  • 添加参数:light_turn_on.py 的路径,如:
1
C:\Users\XINYA\Documents\Local_Projects\mijia-api\light_turn_on.py
  • 起始于:脚本所在目录,如:
1
C:\Users\XINYA\Documents\Local_Projects\mijia-api\

  1. 确定保存任务。

锁定电脑再解锁,进行测试。

仿照此步骤配置“锁定关灯”的任务。

三、演示

演示视频:

dark
sans