这是一个很棒的 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彩灯,甚至是读取温湿度传感器的数据。

Logo

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构

更多推荐