CATALOG

芯步的智能硬件通过标准HTTP接口开放控制能力,任何支持HTTP请求的编程语言或开发平台都可以快速集成。以下从接口机制、签名计算、核心命令、代码示例到状态管理,完整说明如何实现对15W云控制语音壁挂音箱的播放/暂停控制。

一、 接口机制与前提准备

在开始编码之前,你需要准备以下三个关键信息,这些信息可以在芯步的“物联网控制台” -> “开发设置”中找到

  1. AppID (开发者ID): 用于标识你的应用或开发者账户。

  2. AppSecret (开发者密码): 用于接口认证加密的密钥。请勿泄露

  3. 设备ID (Device ID): 音箱的唯一标识。可以在控制台的“设备列表”或设备详情页查看

网络要求该15W智能语音壁挂音箱使用WiFi 2.4G网络连接,无需网关,只要音箱与你的后端服务器(或调用端)网络可达(通常都能访问公网API)即可

二、 核心认证与签名计算 (Sign)

芯步的开放接口通过动态签名(Sign)来保证安全性。所有控制请求都需要携带 signts(时间戳)参数。

签名算法规则如下

  1. 将你的 AppSecret 进行一次 MD5 加密,得到 sign_part1

  2. 获取当前的 Unix 时间戳(秒级),记为 ts

  3. sign_part1ts 拼接成字符串 sign_part1 + ts

  4. 将拼接后的字符串再次进行 MD5 加密,得到最终的 sign

  • 公式sign = md5( md5(AppSecret) + ts )

示例流程假设 AppSecret = "abc123"ts = 1715587200

  • 第一步:md5("abc123") = e99a18c428cb38d5f22e03... (假设值)

  • 第二步:拼接 -> "e99a18c4..." + "1715587200"

  • 第三步:md5(拼接后的字符串) -> 得到最终 sign

三、 控制接口详解 (播放/暂停)

芯步采用统一的指令模型。对于智能语音音箱,控制指令封装在 order 参数中。

  • 请求地址POST https://api.thingboot.com/{AppID}/device/control/

  • 参数位置: URL Query 携带 signts; Body 携带 JSON 数据。

  • 请求头 (Header)Content-Type: application/json

1. 实现“暂停播放”

当音箱正在播放文本或音乐时,发送暂停指令。

  • 指令代码{"play":"pause"}

  • JSON 示例

2. 实现“恢复播放”

如果音箱处于暂停状态,发送播放指令即可继续。

  • 指令代码{"play":"play"}

  • JSON 示例

3. (可选)停止与切换

虽然直接控制播放暂停最常用,但了解停止指令有助于理解状态机。

  • 停止{"play":"stop"} (停止后,部分设备可能需要从头开始播放)

四、 实战代码示例

以下使用 Python 语言演示如何封装上述逻辑。你可以很容易地将其翻译成 Java、PHP 或 Shell 脚本

五、 调试与常见问题

1. 使用调试模式在开发阶段,为了避免签名计算错误,你可以在芯步控制台的“开发设置”中开启 “调试模式” 。开启后,系统将暂时不检查 signts 的合法性,你可以先专注调试 deviceorder 参数 。调试通过后,再关闭该模式并严格按签名算法接入生产环境。

2. 检查参数格式

  • Device ID: 必须是数字或字符串,注意控制台查看的是否准确。有些接口文档示例为 "1878",请替换为你自己的

  • Order 格式: 必须是严格的 JSON 对象 {"play":"pause"},而不是字符串 "{play:pause}"

3. 网络连通性

  • 确保音箱的指示灯状态正常(已连接WiFi)。

  • 如果你的服务器在纯局域网环境,请确认该产品是否支持私有化部署(芯步支持该功能,可联系商务获取局域网IP直连方案)

六、 总结

通过芯步的开放接口控制15W云控制语音壁挂音箱,流程非常简洁:

  1. 获取凭证: AppID, AppSecret, Device ID。

  2. 计算签名: 按照 md5(md5(Secret)+Timestamp) 生成安全签名。

  3. 构造请求: 使用 POST 方法,Body 中带入 deviceorder 字段,其中 order 设置为 {"play":"pause"}{"play":"play"}

这套流程不仅适用于播放暂停,也同样适用于调节音量({"volume":"5"})、切换音色({"voice":"1"})等其他控制指令,只需修改 order 内容即可