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

易语言对接本地AI接口做简易物联网中控实操笔记

2026-10-23 / 0 评论 / 7 阅读

易语言对接本地AI接口做简易物联网中控实操笔记

昨天翻硬盘翻到三四年前写的易语言智能家居中控半成品,当时还得自己写一堆关键词匹配规则,漏个说法就识别不出来,现在直接接本地跑的大模型接口省好多事,随手把步骤记下来。

先把前置的东西准备好

  • 本地先把兼容OpenAI接口格式的大模型服务启起来,我这边用的是ollama跑qwen2的量化版,嫌配置麻烦也可以搭个one-api做中转,只要接口请求格式对就行,跑本地不用碰公网接口,省得有隐私顾虑。
  • 终端的物联网设备端提前刷好简单的MQTT固件,我之前试过给每个设备设单独的通信topic,比如客厅灯是/device/light01,墙面插座是/device/plug02,记得先把本地MQTT broker的地址记好,我用的是mosquitto,装完没改默认端口。
  • 易语言这边提前备两个常用扩展:一个是精易模块,用来发HTTP请求做接口调用,一个是现成的MQTT客户端支持库,不用自己从头写socket逻辑,省不少时间。

核心代码其实没几行

逻辑特别简单,就是把用户说的自然语言丢给大模型,让它解析成对应的设备topic和开关动作,再发MQTT指令就行,核心代码片段我贴在下面:

.版本 2
.支持库 eMQTT
.支持库 spec

' 程序启动先连本地MQTT服务
MQTT1.连接MQTT (“127.0.0.1”, 1883, “eyuyan_control_client”, , , )

.子程序 处理自然语言控制指令
.参数 用户输入文本, 文本型
.局部变量 请求体, 文本型
.局部变量 接口返回, 文本型
请求体 = “{"model":"qwen2","messages":[{"role":"system","content":"你是智能家居中控,只返回JSON格式数据,包含device_topic和action两个字段,action只能是on或者off,禁止返回其他说明文字"},{"role":"user","content":"” + 用户输入文本 + “"}],"temperature":0.1}”
接口返回 = 网页_访问_对象 (“http://127.0.0.1:11434/v1/chat/completions”, 1, 请求体, , , “Content-Type: application/json”, , )
' 后续就是解析返回的JSON,提取对应字段发MQTT消息
调试输出 (接口返回)
这里要特别注意:system提示词一定要写死让模型只返回固定结构的JSON,别让它输出多余的客套话,我最开始没加这个约束,让开客厅灯它给我回一大段卖萌的话,JSON解析直接报错;温度参数设低一点,0.1左右就行,这个场景要的是输出稳定,不需要啥创造性。

几个踩过的小坑

  • 别选太吃资源的大模型版本,我一开始试了个参数规模大的量化版,老工控机跑起来反应慢,喊个指令等好半天,选7B甚至更小参数的量化版足够用,反正只需要做简单的指令提取,不需要复杂推理。
  • MQTT连接的时候别设太长的心跳间隔,我一开始图省事设了很长的间隔,路由器时不时就把空闲连接掐断,设个几十秒的间隔就稳很多。
  • 易语言解析返回的JSON前,记得先把多余的换行、转义字符清一遍,有时候模型返回的内容带个莫名其妙的换行,自带的JSON类容易识别失败。

对了,这个我还没细测多轮对话的情况,目前单条指令控制是稳的,回头有空再加个定时任务联动的逻辑试试。

评论一下?

OωO
取消