
打开终端先装依赖,别等写到一半缺包报错。
依赖安装直接抄的命令
pip install openai paho-mqtt requests
- 如果用国内源装不动,在后面加 -i https://pypi.tuna.tsinghua.edu.cn/simple 就行,不用手动下whl包
- Python版本3.8以上都能跑,太老的版本会报OpenAI SDK的类型注解错误,别硬凑
MQTT接家用IoT网关的核心参数
- 大部分家用开源网关(比如HomeAssistant自带的MQTT broker)默认地址是127.0.0.1,端口1883,没改密码的话用户名留空即可
- 订阅主题直接填你要监控的设备传感器前缀,比如温湿度类设备就填"sensor/+/state",+是通配符,能匹配所有同类型设备
- 接收消息的回调函数里别一开始就塞复杂逻辑,先打印原始报文确认能稳定拿到数据,再走后续判断,不然调半天不知道是消息没收到还是逻辑错了
AI异常判断的最小可用代码片段
import os
from openai import OpenAI
def check_abnormal(device_data):
client = OpenAI(
base_url="你用的大模型接口地址",
api_key=os.getenv("LLM_KEY") # 从环境变量读Key,别硬写在代码里
)
resp = client.chat.completions.create(
model="gpt-3.5-turbo",
messages=[{"role":"user","content":f"判断以下家用物联网设备数据是否属于异常情况,只返回是或否,不要多余内容:{device_data}"}],
temperature=0
)
return resp.choices[0].message.content.strip()
提示:别把temperature参数设太高,不然AI会瞎编判断结果,设成0输出最稳定,适合这种固定规则的判断场景。脚本整体资源占用不高,跑在树莓派这类小主机上完全没问题,具体负载看你接的设备数量。
消息推送的关键配置
- 用Server酱这类第三方推送服务的话,直接发POST请求就行,不用额外装复杂SDK,接口文档里直接拷请求代码改两个参数就行
- 推送内容里要把设备名、异常数据、采集时间写全,别只发“有异常”三个字,不然收到通知还要自己翻日志查问题
- 加个5分钟左右的冷却时间,同个设备同类型异常别反复推送,不然手机一直震,容易被烦到直接关通知权限
对了,第一次跑的时候先拿测试数据试下判断准不准,别直接挂到后台跑,不然哪天误报给你发一堆火灾预警,白吓一跳。
评论一下?