一、场景描述
上床下桌,桌上有一电脑,电脑旁边有灯。
需求:
当我出门后自动关灯;
当我坐在桌前自动开灯;
当我上床自动关灯。
其中 1 可以由米家的现有功能实现:
自动化 ---> 触发条件 ---> 手机联动 ---> 断开 WLAN(宿舍的 WiFi)---> 执行动作 ---> 设备 ---> 灯泡 ---> 关灯
通常 2、3 需要传感器的参与才能实现,但我在不在桌前和开不开电脑是强关联的,所以可以做下面的关联:
- 在桌前 ---> 电脑解锁 ---> 开灯
- 离开 ---> 电脑锁定 ---> 关灯
电脑在一段时间未操作是会自动锁定的(长短可以自定义),等于实现了上床自动关灯(上床了自然无法操作电脑)。
Windows 有一个任务计划程序(Task Scheduler),使用它调用米家的 API 控制智能设备就可以实现上述的联动操作。理论上具备了实现的可能性。
二、实现过程
(一)使用米家 API 控制台灯
使用小米 IoT 控制端 API 需要申请开发者账户,个人开发者目前无法申请。
但得益于 Do1e/mijia-api 的存在,开发者账户也不是问题了。
按照 Do1e/mijia-api 的 README 获取登录信息和设备信息。
在米家 APP 设置两个场景(手动控制):
- 新建两个 Python 脚本调用 API 开/关灯:
1 | # light_turn_on.py |
1 | # light_turn_off.py |
可以在终端测试是否有效。
(二)创建 Windows 任务计划
启动任务计划程序,创建任务;
设置名称;
- 设置触发器;
- 开始任务:工作站解锁时
- 选中当前用户
- 设置操作;
- 操作:启动程序
- 程序或脚本: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\ |
- 确定保存任务。
锁定电脑再解锁,进行测试。
仿照此步骤配置“锁定关灯”的任务。
三、演示
演示视频: