CATALOG

芯步这款40W云语音壁挂音箱开放了HTTP接口,二次开发其实就两步:拿到你的密钥(AppID/AppSecret),然后发一条HTTP请求就能让音箱说话。下面说人话版的操作方案。

一、搞清楚基础逻辑

说白了,就是“你的服务器发指令,音箱乖乖执行”。 音箱通过 WiFi 连着网,一直盯着芯步的云服务器看有没有活儿干。你只需要通过芯步提供的 HTTP 接口,往云端塞一段文字(比如“设备故障报警”),云端立刻推给音箱,音箱那边秒秒钟就用 TTS 合成语音喊出来了

这种方式最省事,你既不需要搞什么录音文件上传,也不用管底层的音频流处理,全程只需要“调接口”。

二、二次开发前的准备工作

动手写代码前,你得先把“钥匙”和“门牌号”拿到手。

  1. 注册/登录开发者后台:去芯步官网找到开发者控制台

  2. 获取 API 密钥(AppID / AppSecret):在控制台的“开发设置”里,你能看到俩字符串:

    • AppID:相当于你的用户名,标识是哪个开发者/应用在调用。

    • AppSecret:相当于你的密码,千万别泄露给前端或放到网页代码里,只放后端

  3. 拿到音箱的“身份证”(Device ID)

    • 在你的控制台“设备列表”里,找到你要喊话的那台 40W 云语音壁挂音箱

    • 复制那一串数字(比如 820720)。如果你有一堆音箱,可以把 ID 记下来,接口支持一次传多个 ID,用逗号隔开就能同时喊

三、核心步骤:签名计算与发送指令

这是最关键的一环。为了防止别人乱喊你的音箱,芯步的接口用了动态签名,规则稍微有点绕,但其实固定写法就那几行。

1. 签名算法(以 Shell 和 Java 为例)

规则是:sign = md5( md5(AppSecret) + ts )

  • ts 是当前时间的秒数(时间戳)。

在 Linux/Bash 环境下(用curl):

在 Java 环境下:

这个方法虽然看着麻烦,但安全性有保障

2. 组装 POST 请求

计算好签名后,把 AppID、sign、ts 拼到 URL 里。

  • 请求地址http(s)://api.thingboot.com/{你的AppId}/device/control/?sign={计算好的签名}&ts={时间戳}

  • 请求方式POST

  • HeaderContent-Type: application/json

  • Body 数据包

    这里有个小细节:"play:gbk:16" 这个 key 是固定写法,16 代表 GBK 编码下的文本类型,普通中文就用它

3. 完整示例(shell + curl)

你可以直接在终端试试,能通就说明环境没问题:

只要返回的 HTTP 状态码是 200,基本就成了,音箱会在零点几秒内开喊

四、进阶玩法:不只是干巴巴播报

芯步的接口不只是能传文字,它支持很多参数。你可以结合业务场景做调整,让播报更生动

  • 音量控制:如果在嘈杂车间,可以强制开大音量。

    • {"volume":9} (音量范围 0-9,先调音量再播报会更稳)

  • 音色切换:需要温柔女声还是浑厚男声?

    • {"voice":1} (具体男女对应值看文档)

  • 打断播报:如果设备正喊个不停,你想插播紧急消息。

    • {"stop":1} (先发一条stop指令,再发新的play指令)

  • 加上提示音:播报前先“叮”一下,提醒大家注意。

    • {"ring":2} (内置好几种铃声)

一个兼顾语音和参数的组合指令例子:先调音量到 7,再切女声,最后喊话。

五、把这个功能整进你的系统

你有三种接入姿势,看你是什么系统:

  1. 如果你的系统是网页/小程序/APP:你千万不要在前端代码里直接调用上面的 URL,因为 AppSecret 会暴露。正确的做法是:你的后端写一个 API(比如 /api/speak,前端调用你这个 API,然后由你这个后端服务器去跟芯步的接口交互。

  2. 如果是企业内部系统(Python/Java/Go)

    • Python:用 requests 库,按上面的签名规则封装成一个函数,业务逻辑里直接调用 send_tts(device_id, text)

    • Java:参考上面的 UnirestOKhttp 写法,把签名逻辑封装好。

  3. 如果是低代码/无代码平台

    • 芯步的接口就是标准的 HTTP 请求,你可以直接在“自定义连接器”或“HTTP 请求组件”里,填上 URL、加上动态签名生成逻辑,就能在可视化流程里拖着用

六、可能踩坑的地方(避坑指南)

  1. 签名不对:这是最容易出错的地方。注意 md5 的结果要转成小写十六进制字符串,另外 ts秒级时间戳,不是毫秒(Java 里除以 1000 这个操作别忘)。

  2. 中文字符乱码:确保你的 POST Body 是 UTF-8 编码,并且 Header 带了 Content-Type: application/json; charset=utf-8

  3. 网络隔离:音箱需要能访问外网()。如果你在纯内网环境,芯步也支持私有化部署,这时候 URL 地址要换成你们内网服务器的地址

  4. 文本长度:虽然 TTS 能合成很长的文字,但单次播报不要太长(一两百字以内)。如果有一大篇文章,分多次发送,或者先让音箱有个缓冲时间。

七、总结整个思路

如果你现在要动手:

  1. 先去后台把 AppIDAppSecretDevice ID 找出来。

  2. 在本机用 curl 跑通上面的脚本,听到音箱“说话”。

  3. 把签名和请求封装成一个工具类,放进你的业务代码里。

  4. 在订单生成、设备报警、人员进入等关键节点,调用这个工具类。

这套方案的优点就是零门槛、响应快,不用考虑驱动兼容那些麻烦事,直接把文字丢过去,音箱就能喊出来。