米家养生壶定时烹饪 | 宁静致远

米家养生壶定时烹饪

正在加载一言...


冬天来了,老妈也不想早起烧水了,让我用手机预约,但是米家里没有定时烹饪,我自己又总会忘记。让她自己预约,她说不会,这不就想搞的简单点,让他能够自己操作,或者不用操作,所以就有了现在这个。

0.基本信息


token的获取,网上有很多的方法,我用的是从SQLite里面查的。拿到令牌后就可以执行一下命令,得到养生壶的基本信息了。
获得米家养生壶基本信息

miiocli device --ip 192.168.xxx.xxx --token ff11axxxxxxxxxxx2ff info

IP: 192.168.xxx.xxx
token : ff11axxxxxxxxxxx2ff
Model: chunmi.health_pot.a1
Hardware version: esp32
Firmware version: 2.1.8_0006

🏠 <—–> ☁️ <—–📱

  1. 手机发送指令给巴法云,控制定时器的开关
  2. 家中的Node-Red和应用程序分别订阅相关主题
  3. 如果定时任务打开,到指定时间会想巴法云推送开始烹饪的指令
  4. 程序收到相关指令就开始操作养生壶烹饪

其实这个比较绕了,可以直接crontab定时调用程序就行了,但是想小程序控制就绕了一圈。

1.miio获取相关信息


下面是一些miio获取的命令,可以参照一下。集体的属性要看它的文档,相关链接在文章的末尾,可以参看。

获得当前状态

miiocli -d device --ip 192.168.xxx.xxx --token ff11axxxxxxxxxxx2ff raw_command get_properties "[{'did': 'status', 'piid': 1, 'siid': 2} ]"

获得错误码

miiocli -d device --ip 192.168.xxx.xxx --token ff11axxxxxxxxxxx2ff raw_command get_properties "[{'did': 'fault', 'piid': 2, 'siid': 2} ]"

属性截图
动作的参数经过多方查找和尝试,最后在python-miioissues里面找到了正确的写法。
命令写法
经过尝试,总结出了如下的命令:
开始烧水

miiocli -d device --ip 192.168.xxx.xxx --token ff11axxxxxxxxxxx2ff raw_command action "[{'did': 'start-cook', 'aiid': 1, 'siid': 2, 'in': [{'piid': 3, 'value': 4}]} ]"

取消烹饪

miiocli -d device --ip 192.168.xxx.xxx --token ff11axxxxxxxxxxx2ff raw_command action "[{'did': 'cancel-cooking', 'aiid': 2, 'siid': 2}]"

动作截图

2.路由器上安装 python-miio


# 安装相关包
opkg install python3-pip 
opkg install python3-dev
opkg install gcc
# 安装 python-miio
pip install python-miio

3.代码编写/调试


在路由上起一个服务,订阅巴法云上的主题来控制养生壶动作。代码就不贴了,没啥特别的。然后把定时放到Node-Red上,也可以用crontab定时,这个看自己实现方式了。但是在控制的时候运行报错,报No module named ‘_cffi_backend‘,截图如下:

报错截图

网上多半说是因为没有安装 cffi ,但是实际情况是已经安装好了的,最后看找不到32位Python的_cffi_backend。如何检查共享对象的预期后缀?看了这个文章,是不是因为文件名的问题,我尝试了一下,把之前的拷贝了一份,发现可以成功运行了。

cd /tmp/mnt/sda/entware/lib/python3.9/site-packages
cp ./_cffi_backend.cpython-39-aarch64-linux-gnu.so _cffi_backend.so
find . -name "*_cffi_backend*"
|./_cffi_backend.so
|./_cffi_backend.cpython-39-aarch64-linux-gnu.so

Node-Red中添加node-red-contrib-chronos节点,实现定时功能。小程序上实现定时器的开关。
Node-Red截图
实战了下,在早上5:30成功的烧水了,加了server酱的通知。
通知截图

4.总结


这个其实很早之前就想整了,但是之前一直都没成功,后面就搁浅了。这不功夫不负苦心人,终于搞定了。所以只要坚持就是胜利啊。

参考链接


小米养生壶接入
米家miot设备接入HA
MIOTALL
chunmi.health_pot.a1
Xiaomi Miot For HomeAssistant
python-miio issues
找不到32位Python的_cffi_backend。如何检查共享对象的预期后缀?


文章作者: 彤爸比
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 彤爸比 !
评论
  目录