说在前面
之前总觉得米家可以配置的规则太少,就算是极客版的规则配置也没有灵活性,前几天发现了官方的宝藏库 xiaomi-miloco,经过我(其实是G老师)的研究,这个库大有可为啊 ^-^
首先,安装后就算不配置任何模型,仅使用已安装的默认配置,也可以支持本地推理图像识别;
其次,你可以基于miloco库二开,来达成一些米家无法配置,只能通过编程方式来实现的场景,比如:
- 获取摄像头视频流,交给本地图形识别模型(比如最经典的yolo)来实时识别物品、人物等然后触发一个可编程的自定义任务
- 订阅插座、开关等智能设备的事件,触发一个你自定义的编程事件
甚至服务器和米家设备可以不在同一个局域网,miloco能走云端接口访问/操作设备,不过还是推荐在一个内网里
剩下的不用多说,DDDD ^-^
你需要准备
- 一台服务器(最好是linux发行版或macOS系统,windows环境会受powershell影响导致AI出现需要浪费更多token反复调试、对话响应慢等问题,不推荐;最好有显卡)
- 至少任意一台米家智能设备(废话)
- A\或O\的账号(可选,用于问AI,国模不建议使用,无法解决问题不说还浪费token,如果大佬有能力直接修改源码也可以不需要)
安装配置
- 第一步当然是安装 OpenClaw 或 Hermes,已安装就跳过,教程参考官方文档,推荐让G老师帮你安装,安装完后记得配置模型
- 安装 Xiaomi Miloco,安装方式见官方文档,推荐让G老师帮你安装
- 配置Miloco关联米家账号,可以不用配置云端模型
- 现在就可以开始编写代码了
- 结束
说明
- 如果不涉及语义识别,甚至不需要LLM模型,传统的YOLOv9-S等模型即可实现(比如判定人类等生物拿着杯子站在饮水机旁接水这种,就只需要图像识别模型,不需要LLM大模型,但如果你还要加上拿着康帅傅冰红茶站在饮水机旁接水的触发条件才可能需要LLM模型)
- 我部署的识别方案是:YOLOv9-S TensorRT + ByteTrack。从Miloco连接摄像头实时获取最新的JPEG帧图像存入内存,活动时以10 fps执行YOLOv9-S TensorRT FP16检测,person交给ByteTrack。无人且画面连续30秒无显著变化后切至2 fps,只做160×90 OpenCV背景差分;变化面积达到阈值后对当前帧立即恢复10 fps和YOLO。曝光变化、左上时间戳、孤立灰尘和单帧小物体会被过滤。
- 我使用几年前的老神船笔记本部署,配置是i7-10700 + RTX 2070 + 64G内存 + 4T固态 + 万兆内网,系统是centos 10,部署了4个图形识别任务,在以上方案中,cpu占用30%左右,显卡占用0-30%,常驻156M显存占用,因为不涉及LLM模型,所以压力非常低
附件
以下是使用G老师整理出来的订阅设备事件和摄像头源的方案(由于L站无法上传md文件,且内容过长,下载后请修改后缀为.md打开):
Miloco摄像头与设备事件开发指南.pdf (19.2 KB)