当前位置: 首页 > news >正文

xiaozhi-esp32 里配置 OTA URL 的位置是

可以,xiaozhi-esp32里配置OTA URL的位置是:

idf.py menuconfig → Xiaozhi Assistant → Default OTA URL

这个配置对应源码里的CONFIG_OTA_URL。项目的main/Kconfig.projbuild里定义了OTA_URL,默认值是官方 OTA 地址,说明里也写明该 URL 用于检查新固件和服务器地址。(GitHub)


1. OTA URL 不是 WebSocket URL

这里容易搞错。

OTA_URL应该填OTA 配置接口地址,不是直接填wss://.../xiaozhi/v1/

比如你自己部署的服务是:

https://your-domain.com/xiaozhi/ota/

那么Default OTA URL就填:

https://your-domain.com/xiaozhi/ota/

固件启动后会先请求这个 OTA 接口,然后 OTA 接口再返回:

{ "websocket": { "url": "wss://your-domain.com/xiaozhi/v1/", "token": "your_token", "version": 3 }, "firmware": { "version": "1.0.0", "url": "" }, "server_time": { "timestamp": 1710000000000, "timezone_offset": 480 } }

源码里CheckVersion()会访问GetCheckVersionUrl(),再解析 OTA 返回的activationmqttwebsocketserver_timefirmware等字段。(GitHub)


2. 推荐配置方法

方法 A:用 menuconfig 配置

idf.py menuconfig

进入:

Xiaozhi Assistant → Default OTA URL

改成:

https://你的服务器域名/xiaozhi/ota/

然后重新编译烧录:

idf.py build idf.py flash monitor

项目 README 里建议使用 ESP-IDF 5.4 或以上版本。(GitHub)


3. 如果改了不生效,重点看这三个地方

第一,sdkconfig已经生成,直接改Kconfig.projbuild不一定生效

Kconfig.projbuild里的default只是在首次生成sdkconfig时生效。
如果工程里已经有sdkconfig,你直接改:

main/Kconfig.projbuild

可能不会改变最终编译值。

正确做法是改:

sdkconfig

找到:

CONFIG_OTA_URL="https://api.tenclass.net/xiaozhi/ota/"

改成:

CONFIG_OTA_URL="https://你的服务器域名/xiaozhi/ota/"

或者重新跑:

idf.py menuconfig

第二,设备 NVS 里可能已经保存了旧的ota_url

源码里实际优先级是:

NVS 中 wifi/ota_url 优先于 CONFIG_OTA_URL

也就是说,如果 NVS 里已经保存过ota_url,固件会优先用 NVS 里的地址;只有 NVS 为空时才使用CONFIG_OTA_URL。源码里GetCheckVersionUrl()先读Settings("wifi").GetString("ota_url"),为空时才 fallback 到CONFIG_OTA_URL。(GitHub)

所以建议改完 OTA URL 后执行一次:

idf.py erase-flash idf.py flash monitor

或者至少确认 NVS 没有旧配置。


第三,自建 OTA 接口必须返回 WebSocket / MQTT 配置

固件不是只靠OTA_URL工作。它启动流程是:

联网成功 → 创建 OTA 对象 → CheckAssetsVersion() → CheckNewVersion() → InitializeProtocol()

InitializeProtocol()会根据 OTA 返回内容决定使用 MQTT 还是 WebSocket;如果 OTA 返回mqtt就走 MQTT,如果返回websocket就走 WebSocket。(GitHub)

WebSocket 协议实际读取的是:

websocket.url websocket.token websocket.version

源码在WebsocketProtocol::OpenAudioChannel()里从Settings("websocket")读取urltokenversion,然后连接 WebSocket 服务。(GitHub)


4. 最小可用 OTA 返回示例

如果你只想走 WebSocket,OTA 接口最少建议返回:

{ "websocket": { "url": "wss://your-domain.com/xiaozhi/v1/", "token": "", "version": 3 }, "firmware": { "version": "1.0.0", "url": "" } }

如果当前固件版本也是1.0.0,并且firmware.url为空,一般不会触发升级,只会把 WebSocket 配置写入 NVS,然后正常初始化协议。


5. 自建小智服务器时的地址对应关系

通常是:

OTA 接口: https://your-domain.com/xiaozhi/ota/ WebSocket 接口: wss://your-domain.com/xiaozhi/v1/

xiaozhi-esp32-server的说明里也给出了类似结构:OTA 接口是/xiaozhi/ota/,WebSocket 接口是/xiaozhi/v1/。(GitHub)


6. 推荐排查顺序

你可以按这个顺序查:

grep CONFIG_OTA_URL sdkconfig

确认输出是你的地址:

CONFIG_OTA_URL="https://your-domain.com/xiaozhi/ota/"

然后擦除并重新烧录:

idf.py erase-flash idf.py flash monitor

串口里重点看:

Current version: Check new version failed url= Connecting to websocket server:

如果串口里的url=还是官方地址,说明sdkconfig或 NVS 没清干净。
如果url=是你的 OTA 地址,但报status codeFailed to parse JSON response,说明你的 OTA 接口返回格式不对。
如果 OTA 成功但 WebSocket 连不上,检查 OTA 返回里的websocket.urltokenversion

http://www.jsqmd.com/news/851497/

相关文章:

  • 别再折腾环境了!手把手教你用Docker镜像5分钟搞定NeRF Studio(附避坑指南)
  • 5分钟精通APK Installer:Windows上安装Android应用的完整方案
  • 从零打造可落地的直流电机 PID 驱动系统:硬件设计 + 算法实现 + 仿真验证全流程
  • XMly-Downloader-Qt5:解锁喜马拉雅音频自由之旅
  • LM317电源模块的“隐藏参数”与实战避坑:为什么你的空载电压总是不稳?
  • 保姆级教程:安装PyTorch后,用这4个方法彻底验证GPU加速是否真的生效
  • 电池内阻测试全解析:DCIR与EIS原理、测试与应用实战
  • 如何快速创建一个轻量美观的导航站?Typecho + MijiNav组合轻松完成
  • MacBook Pro用户必装!iStatistica Pro保姆级设置指南:从菜单栏监控到Sonoma小组件
  • CANN asc-devkit Select函数
  • 深入TI毫米波雷达数据流:从ADC采样到点云输出的代码级解析(以IWR6843AOP Out of Box Demo为例)
  • 从科学视角,如何理解和研究涌现——寻规律,探法则,溯本源|郑志刚
  • m4s-converter完整指南:快速将B站缓存视频转换为MP4格式
  • 采购必备的30+常用术语大全
  • 告别Midjourney订阅费?试试这款免费开源的Fooocus,本地部署就能玩转AI绘画
  • 保姆级教程:用Python和ROS控制越疆Dobot机械臂完成第一个抓取任务(附完整代码)
  • 从零打造可落地的直流电机 PID 驱动系统 (二):增加蓝牙远程控制功能
  • CANN/asc-devkit指数函数API文档
  • MIT Cheetah-Software编译手记:搞定Qt5.10.0路径、LCM依赖与那些诡异的C++报错
  • 两百元预算玩转OpenHarmony标准系统:低成本开发板硬件选型与驱动开发实战
  • 如何用BilibiliDown轻松下载B站视频:新手完整指南
  • Layerdivider深度解析:5步实现智能图像分层,生成专业级PSD文件
  • 2026年成都清水建筑模板批发新趋势,厂家直供更省心 - GrowthUME
  • 2026年B站游戏业务:稳住盈利,两手抓战略寻增量!
  • 从滑动变阻器到真实传感器:STM32CubeMX ADC单通道采集电压的校准与数据处理实战
  • 5分钟告别桌面混乱:免费开源工具NoFences帮你打造高效工作空间
  • 【亲测免费】 开源之旅:ChatGPT-Next-Web,跨平台的智能对话界面
  • 别再只用来测网速了!手把手教你用Win11自带的IIS,5分钟搭个能分享文件的局域网小网站
  • NLP-Models-Tensorflow核心算法详解:从Bahdanau到Luong Attention的演进
  • 2026年建筑模板加工厂精选指南:品质与服务并重的选择 - GrowthUME