CATALOG

芯步的智能硬件开放接口主要走HTTP协议,控制逻辑其实很简单:算签名、发POST请求、带上设备和命令就行。下面以15W壁挂音箱为例,聊一下怎么实现播放、暂停、停止这些基础控制。

一、准备工作

在开始写代码之前,先要拿到三样东西,缺一不可:

  1. AppID:你的应用唯一标识,就像身份证号。

  2. AppSecret:相当于密码,千万别泄露到前端代码里,也别上传到GitHub。

  3. 设备ID(Device ID):就是那台15W音箱的编号。配网成功后,在芯步控制台的后台就能看到。

另外,这款音箱走的是WiFi 2.4G网络,不需要额外买网关。配网的时候记得确保手机连的是2.4G WiFi,而不是5G频段的。

二、接口鉴权(签名计算)

芯步的接口通过签名来验证身份,不是直接传明文密码的。签名的计算规则是:

sign = md5( md5(AppSecret) + ts )

看着有点绕?拆解一下:

  • 第一步:把AppSecret取一次MD5,得到 secret_md5

  • 第二步:把当前的时间戳(单位是秒)拼接到 secret_md5 的后面。

  • 第三步:把拼接好的字符串再整体取一次MD5。

举个简单例子(假设值):

  • 你的 AppSecret = abc123

  • md5(AppSecret) = e99a18c428cb38d5f22e03

  • 当前时间戳 ts = 1714550400

  • 拼接后的字符串 = e99a18c428cb38d5f22e03 + 1714550400

  • 最后的签名 = md5(拼接后的字符串) = 6dsf9e8f...

时间戳(ts)和签名(sign)要放在请求的URL参数里。

三、核心API:控制播放与暂停

这音箱不像蓝牙耳机那样有“上一首/下一首”的概念,它主要是接收文字来播报(TTS语音合成)。但你问到的“暂停控制”,实际上是通过 “停止” 命令来实现的。

1. 请求地址

2. 请求头

Content-Type: application/json

3. 请求体(JSON格式)

  • device:填你设备的ID。

  • order:这里填具体的控制指令。

四、具体命令示例

这里就是这次方案的核心了。不同的操作对应不同的 order 参数

1. 播报文字

让音箱开口说话。支持中文、数字、金额、手机号等智能识别。

注意:这里的 gbk:16 通常代表编码和格式,照搬这个格式就行,把里面的汉字换成你想说的。

2. 停止播放

这就是你要的“暂停/停止”功能。如果音箱正在“滔滔不绝”,发这个命令就让它立刻闭嘴。

场景应用:商场广播正在播促销广告,这时候有紧急寻人需求,系统直接发一条 stop,再发一条“请张三小朋友到服务台”,无缝衔接。

3. 调节音量

觉得太吵或者听不见,远程调整音量。

说明:音量值一般范围是 0-100,不用加百分号。

4. 调节语速

想让播报快一点或者慢一点。

说明:范围通常也是 0-100,50是正常语速。

五、实战代码片段

理论上任何支持HTTP的语言都能对接。这里用最常见的 JavaPython 演示一下控制流程。

Python 3 示例

Java 示例

可以在项目中用 Unirest 或者 OkHttp,参考下面的核心逻辑

六、一些实用

  1. 状态同步问题:HTTP接口是无状态的,如果你在小程序里点了“暂停”,音箱停了,但如果你刷新页面,除非你去查询设备状态(部分型号支持),否则按钮可能还显示“播放中”。以后台日志为准,或者在暂停成功后,前端直接主动更新UI状态。

  2. 网络波动:如果调用接口返回超时,不要立即重试。建立设置一个合理的超时时间(比如3秒),或者用消息队列做缓冲,避免在网络差的时候发一堆重复指令。

  3. 场景设计:所谓的“暂停控制”,其实可以根据业务逻辑玩出花来。比如做一个队列播报系统:新订单来了播报“您有新的订单”,如果连续来3个订单,不要让它连续播报3次打扰人,而是用逻辑控制播报一次“您有3个新订单”。如果需要打断当前播报优先播报紧急内容,就先发 stop 再发新内容。

按照上面的步骤,你应该就能顺利通过代码来“使唤”这个15W的音箱了。如果遇到签名报错,大概率是时间戳不对(服务器时间和本地时间差太多),或者是把AppSecret当成明文拼接了,记得先做一次MD5。