在windows电脑部署小龙虾openclaw,通过mqtt协议控制ESP32的灯光
这是一个很棒的 DIY 项目,实现的核心思路是:OpenClaw 作为“大脑”发出指令,通过 MQTT 协议这个“语言”与 ESP32 通信,ESP32 则作为“手”执行控制灯光。
下面我会分四步,带你从零开始完成整个部署和配置流程。整个过程不需要你手动配置编程环境,一键部署包会搞定一切。
第一步:在 Windows 上部署 OpenClaw(小龙虾)
首先,我们需要在你的 Windows 电脑上安装 OpenClaw 这个 AI 智能体。注意,下面这几点是关键,可以帮你避开不少坑。
准备工作:临时关闭杀毒软件
OpenClaw 需要模拟键鼠、读写文件,这容易被杀毒软件误判并拦截。在解压和安装前,建议暂时退出 360、腾讯管家、火绒以及Windows自带的 Defender。
下载与解压
-
- 下载:访问提供的下载地址(例如 https://openclaw.ikidi.top/...),获取一键部署包。
- 解压:不要用Windows系统自带解压,它可能会损坏文件。请使用 WinRAR 或 7-Zip 解压文件。
一键安装
-
- 进入解压后的 Openclaw-win 文件夹,双击运行 Openclaw Windows 一键启动.exe。
- 如果弹出“Windows已保护你的电脑”,点击“更多信息”,然后选择“仍要运行”。
- ⚠️ 路径设置(必看):安装路径必须是纯英文,不能有中文、空格或特殊字符。推荐设为 D:\OpenClaw,并避免安装在C盘。
- 之后一路“下一步”,程序会自动安装所有依赖。
启动与验证
-
- 安装完成后,OpenClaw 会自动启动。首次启动会有一个1-3分钟的初始化过程(“Waiting for Gateway”),这是正常的,耐心等待即可。
- 成功标志:主界面右上角显示 “Gateway 在线” ,说明你的“小龙虾”已经成功部署,可以开始使用啦。
第二步:为 ESP32 安装 MQTT 固件并配置
要让 ESP32 听话,通常需要给它刷入支持 MQTT 控制的固件。Tasmota 是一个很流行的选择。
刷写 Tasmota 固件:这个步骤稍微有点技术门槛,但网上有很多教程。最直接的方法是使用 Tasmota 官方网页刷写工具,通过 USB 数据线将固件烧录到你的 ESP32 开发板上。
初次配置:
-
- 刷写完成后,ESP32 会发出一个名为 tasmota-xxxx 的 Wi-Fi 热点。
- 用手机或电脑连接这个热点,浏览器会自动打开配置页面。
- 按照提示,把你的家庭 Wi-Fi 名称和密码告诉 ESP32,这样它就能连接到你的局域网了。
设置 MQTT 服务器:
-
- 在 ESP32 的 Tasmota 配置页面,找到 “Configure MQTT”。
- 由于我们是让 OpenClaw 直接在电脑上控制,电脑就成了 MQTT 服务器。所以:
- Host:填写你Windows 电脑的局域网 IP 地址(例如 192.168.1.100)。
- Port:保持 1883。
- 其他信息可以先留空,点击 “Save” 保存。此时页面可能会显示 “MQTT Disconnected”,别急,因为电脑端的服务器还没开。
第三步:配置 OpenClaw 的 MQTT 控制技能
这是核心环节,我们需要给 OpenClaw 添加一个技能,让它知道如何通过 MQTT 协议发指令。
一个专门为这个场景设计的技能叫 RealWorldClaw。简单来说,它就是一个 MQTT 客户端,能让 AI 通过它来和硬件对话。
安装 Python 依赖库:
首先,我们需要让电脑能运行 Python 的 MQTT 命令。请打开电脑的命令提示符(CMD),输入以下命令并回车:
bash pip install paho-mqtt
如果提示 pip 不是内部命令,说明部署包里的 Python 没加到系统路径,你可以去 D:\OpenClaw 目录下找 python.exe 的完整路径来执行。
创建并编写控制脚本:
-
- 创建文件夹:在OpenClaw的技能目录下新建一个文件夹,用于存放我们的自定义脚本。通常路径是 D:\OpenClaw\skills\esp32_light\。
- 编写 Python 控制脚本 (main.py):在该文件夹下新建一个文本文件,将下面的代码复制进去,然后把文件重命名为 main.py(注意后缀是 .py)。
- OpenClaw 当用户下达开/关灯的命令时,向哪个 MQTT 主题发送什么消息。
- main.py
import sys
import json
import paho.mqtt.publish as publish
1. 请务必将此 IP 地址修改为你 ESP32 开发板在路由器上的 IP 地址!
ESP32_IP = "192.168.1.xxx" ⚠️ 这里要改成你ESP32的实际IP
def control_light(state):
"""通过MQTT发送指令控制灯光"""
Tasmota固件的控制主题格式: cmnd/设备IP/power
topic = f"cmnd/{ESP32_IP}/power"
发送 MQTT 消息,state 是 "ON" 或 "OFF"
publish.single(topic, state, hostname="localhost")
if __name__ == "__main__":
接收来自OpenClaw的指令参数
input_data = json.loads(sys.argv[1])
action = input_data.get("action", "")
if action == "on":
control_light("ON")
print(json.dumps({"status": "success", "message": "灯已打开"}))
elif action == "off":
control_light("OFF")
print(json.dumps({"status": "success", "message": "灯已关闭"}))
else:
print(json.dumps({"status": "error", "message": "无效的动作"}))
声明技能结构 (skill.json):
在同一目录(D:\OpenClaw\skills\esp32_light\)下,再创建一个 skill.json 文件。这个文件是给AI看的说明书,告诉它什么时候调用这个脚本,以及需要哪些参数。
"name": "esp32_light_control",
"description": "通过MQTT协议控制ESP32开发板上的LED灯开关",
"parameters": {
"type": "object",
"properties": {
"action": {
"type": "string",
"enum": ["on", "off"],
"description": "要执行的动作,打开(on)或关闭(off)"
}
},
"required": ["action"]
}
}
第四步:测试与最终效果
所有配置完成后,最重要的“桥梁”搭建环节来了。
安装并运行 MQTT 服务器:
这是很容易被忽略的一步。为了让电脑和ESP32能通过MQTT说话,你的电脑上必须有一个MQTT服务器(Broker)。
-
- 安装:下载并安装一个轻量级的服务器,比如 Mosquitto。
- 启动:安装完成后,在Windows服务中找到 “Mosquitto Broker” 并启动它。
重启 OpenClaw:
为了让新添加的技能生效,需要重启OpenClaw。关闭主程序窗口,然后再次双击桌面的快捷方式启动它。
下达语音/文字指令:
现在,在 OpenClaw 的对话框里,像和朋友说话一样输入指令吧!
-
- “打开灯”
- “关灯”
AI 会解析你的意图,匹配到我们刚才创建的 esp32_light_control 技能,然后脚本就会自动通过 MQTT 协议向你的 ESP32 发送开关指令。同时,你会在 OpenClaw 的运行日志里看到 Python 脚本的执行输出,比如 "灯已打开"。
常见问题与解决方法
- OpenClaw启动报错或被杀毒软件拦截:请再次检查杀毒软件是否彻底关闭,特别是 Windows Defender 的“实时防护”。然后重新解压部署包并启动。
- 指令无效,OpenClaw没反应:先确认 OpenClaw 主界面右上角是否显示 “Gateway 在线”。如果显示“离线”,尝试点击旁边的“重启”按钮。
- 灯没反应:
- 确保 ESP32 已成功连接到你的家庭 Wi-Fi。
- 检查 Windows 电脑的 MQTT 服务器(如 Mosquitto)是否正在运行。
- 最关键的一步:确认 main.py 脚本里的 ESP32_IP 变量,是否填写了 ESP32 正确的局域网 IP 地址。
整个链路跑通之后,就可以举一反三了。你可以通过修改 Python 脚本里的 MQTT 主题和消息内容,让 AI 去控制智能插座、RGB彩灯,甚至是读取温湿度传感器的数据。
openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构
更多推荐


所有评论(0)