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

小智Pro支持固件在线更新:原理+流程拆解(续)

前文分享了小智AI自定义唤醒词+表情包+背景图的基本原理:

小智AI 如何自定义唤醒词+背景图:原理+流程拆解

远程控制+文字唤醒,小智Pro开放API调用,释放小智无限潜力

有朋友好奇:

浏览器生成的assets.bin是如何发送给设备的?

今日分享,聊聊前端-后端-设备端的三方通信逻辑。

基于此,给出小智Pro的具体实现方案。

1. 架构设计

回到前文的问题:

浏览器生成的assets.bin如何发送给设备端

参考:https://github.com/78/xiaozhi-assets-generator

来看小智的实现思路:一个非常巧妙的三方通信架构:

  • 前端 ↔️ 后端:WebSocket (控制通道)
  • 设备 ↔️ 后端:HTTP (数据通道)
  • 后端:作为中间协调者,连接两端

简单画个流程图:

为啥要这么搞?

  • 解耦设计:前端不直接与设备通信
  • 协议桥接:WebSocket ↔ HTTP 的实时数据转发
  • 状态同步:通过事件机制实现三端状态一致
  • 安全机制:临时URL,防止未授权访问

2. 完整流程

了解了架构,我们来看完整流程:

阶段1-2:前端准备阶段

前端通过WebSocket告诉后端:“我要上传一个文件”

const createMessage = { type: 'create_file', fileName: 'assets.bin', fileSize: blob.size }; this.ws.send(JSON.stringify(createMessage));

阶段3:后端生成URL

后端创建临时文件会话并返回下载URL:

阶段4:前端配置设备

前端拿到URL后告诉设备去下载:

await callMcpTool('self.assets.set_download_url', { url: downloadUrl // 这就是上面的download_url })

阶段5:设备端HTTP下载

// 设备端直接HTTP GET请求 if (!http->Open("GET", url)) { ESP_LOGE(TAG, "Failed to open HTTP connection"); return false; }

阶段6:后端转发数据给设备

当设备请求下载时,后端检测到这个请求对应某个session,不从文件系统读取,而是实时转发前端通过WebSocket发送的二进制数据:

阶段7:后端通知前端传输开始

当后端开始向设备提供HTTP数据时,发送transfer_started事件给前端:

case 'transfer_started': this.currentSession.transferStarted = true if (this.onTransferStarted) { this.onTransferStarted() // 通知前端可以开始发送数据了 }

阶段8:前端传输完成 & 后端下载完成

当前端传输的数据,被后端全部接收后,销毁session,完结撒花!

3. 小智Pro 实现

免费体验👇:

https://mkwyqeoebedx.sealosbja.site

基于以上原理和流程,小智Pro 服务端,现已支持自定义唤醒词+背景图

注:需下载小智Pro-v2.0.5.1及以上版本固件体验:

https://github.com/hougeai/xiaozhiPro/releases

写在最后

本文分享了小智AI实现固件更新前端-后端-设备端的三方通信逻辑。。

如果对你有帮助,不妨点赞收藏备用。

欢迎来聊。

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

相关文章:

  • 具身智能时代,从“白虎”开始:白虎数据集构建通用机器人数据底座
  • 成立于2020年的拓竹科技,仅用5年时间便登顶全球消费级3D打印市场,成为该赛道的“隐形王者”
  • 优质SCI论文的完整框架设计
  • 【AI】AI大模型之流式传输(前后端技术实现)
  • 2025.8大众点评(武汉)全品类数据
  • 分子动力学模拟-油气界面张力和最小混相压力计算
  • 刷题日记 合并区间
  • 2007-2024年健康城市试点政策DID数据
  • 使用Python打造Markdown转EPUB电子书生成工具
  • c++qt开发第三天 摄像头采集视频
  • 2005-2025年各省、地级市、上市公司人工智能创新发展试验区DID数据
  • 从零构建:手写一个支持“高度定制化排版”的 Chrome 网页摘录插件
  • 晶台光耦在储能系统中的作用
  • 基于时间和空间的大规模电动汽车入网网损调度 建立MISOCP模型,分时段优化,并行计算(实时优化)
  • 软考高项—信息系统项目管理师,2026全新汇总!
  • 远程代打卡难根治?深度解析盖雅蓝牙打卡如何从底层杜绝考勤舞弊
  • 20亿并购背后的AI Agent核心密码:LangChain与Manus联合揭秘上下文工程三大策略
  • 网站meta标签添加Meta property=og协议的OG标签优化详解教程
  • 2026年最新爆火AI论文工具盘点:7款神器实测,知网维普查重一把过不留痕!
  • 当Ada记录类型含有可变长数组分量时的逆向分析
  • 刀客doc:小米是时候切断和粉丝的脐带了
  • 全网最全8个AI论文软件,专科生搞定毕业论文+格式规范!
  • 使用FOFA挖掘Grafana CVE-2025-4123漏洞与赏金获取全记录
  • USB TYPE-C 公头连接器设计规范总结:提升可靠性、降本增效的关键指南
  • LSB与MSB:嵌入式开发中的核心概念详解
  • 手机电池连接器:现代电子设备的关键组件介绍
  • 救命神器!10款AI论文写作软件测评:本科生毕业论文必备
  • 睡眠检测模型复现与调试完整解决方案
  • 导师推荐!8款一键生成论文工具测评,本科生写论文不再难
  • 【大学院-筆記試験練習:线性代数和数据结构(4)】