侧边栏壁纸
  • 累计撰写 35 篇文章
  • 累计收到 2 条评论

用Python给家用温湿度传感器接本地AI告警

2026-9-21 / 0 评论 / 10 阅读

用Python给家用温湿度传感器接本地AI告警

上次我把书架上吃灰半年的ESP8266温湿度节点刷完固件,对着写死的阈值告警逻辑发愣——明明梅雨季湿度到80%才需要提醒开抽湿机,写死数值的话春秋季同湿度完全没必要报警,干脆用本地跑的小模型接了段脚本凑活用,步骤写下来给刚碰这几块的朋友参考。

先把前置依赖装好

  1. 首先确保本地Python版本在3.9以上,终端敲下面的命令查版本,版本不对就去官网下安装包,安装时记得勾选add to path选项
    python --version
  2. 先确保本地装好了Ollama服务端,安装包去官网下就行,一路下一步装完自动在后台运行。再装两个必要的Python依赖库,一个用来接收MQTT协议传输的传感器数据,一个用来调用本地大模型接口,直接装最新版即可:
    pip install paho-mqtt ollama
坑提前说:如果pip装完提示找不到命令,多半是你Python的Scripts目录没加系统环境变量,临时测试的话直接写全路径调用也行,不用死磕环境变量折腾半小时。

核心逻辑没你想的复杂

  1. 先写MQTT订阅部分,连你自己家里的MQTT broker就行,地址一般是路由器或者NAS的内网IP,默认端口1883,订阅主题填传感器上传数据用的topic即可:
    import paho.mqtt.client as mqtt
    import ollama
    import json
    
    def on_message(client, userdata, msg):
        data = json.loads(msg.payload.decode())
        temp = data.get("temperature")
        hum = data.get("humidity")
        # 后续接AI判断逻辑
        print(f"收到数据:温度{temp}℃,湿度{hum}%")
  2. 接上AI判断的部分,不用写复杂的提示词,直白说清要求就行。模型选你本地已经拉取过的小参数模型就好,比如qwen2:0.5b或者phi3,跑起来几乎不占资源,树莓派这类低性能设备也能带动:
    prompt = f"当前室内温度{temp}摄氏度,湿度{hum}%,判断当前温湿度是否需要给住户发提醒,只需要回答是或否,不要额外内容"
    response = ollama.chat(model="qwen2:0.5b", messages=[{"role":"user","content":prompt}])
    if "是" in response["message"]["content"]:
        # 这里换成你自己的推送逻辑,比如发微信、弹桌面通知都可以
        print("注意:当前温湿度体感不适")
  3. 最后补完MQTT的连接和常驻运行逻辑,把脚本存成ai_alert.py直接跑就行:
    client = mqtt.Client()
    client.on_message = on_message
    client.connect("你家的MQTT服务内网IP", 1883, 60)
    client.subscribe("你的传感器数据主题")
    client.loop_forever()
别一上来就选7B以上参数的大模型,传感器上报的都是短文本数据,小模型足够应付,选大了不仅推理慢,后台常驻还平白耗功耗。

反正我自己用下来,比之前写死阈值的逻辑灵活太多,连窗户没关导致温度骤降这类没提前写规则的场景都能识别出来,你要是手头有闲置的传感器节点,花点时间搭一套试试?

评论一下?

OωO
取消