W70B和W70R(云喇叭)API
本api适用于序列号开头为W70B/W70R的设备,app_id和app_secret请到wdev.wmj.com.cn 填用手机号或邮箱登录获取。
点击下面的序号展开
1.注册设备
将设备和app_id、app_secret绑定
请求URL
https://wdev.wmj.com.cn/deviceApi/register
请求方式
POST
请求格式
json
参数
{
"app_id": "",
"app_secret": "",
"device_sn": ""
}
| 参数名 | 必选 | 类型 | 说明 |
|---|---|---|---|
| app_id | 是 | string | 硬件云app_id,从wdev.wmj.com.cn登录获取。 |
| app_secret | 是 | string | 硬件云app_secret,从wdev.wmj.com.cn登录获取。 |
| device_sn | 是 | string | 设备序列号 |
返回示例
{
"code": 0,
"msg": "注册成功"
}
{
"code": 1005,
"msg": "设备已注册"
}
返回参数说明
| 参数名 | 类型 | 说明 |
|---|---|---|
| code | int | 错误码 0成功其他异常 |
| msg | int | 描述 |
备注
更多返回错误代码请看首页的错误代码描述
2.播放云语音
接口URL
https://wdev.wmj.com.cn/deviceApi/send
请求方式
POST
请求类型
json
请求Body参数
{
"app_id": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx5",
"app_secret": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx5",
"device_sn": "W70BAEE51CC",
"data":{
"cmd_type":"play",
"info": {
"tts": "欢迎您使用本自助洗车服务。为了给您和其他车主营造一个干净、整洁、舒适的洗车环境,请您在洗车过程中自觉保持现场卫生。",
"speaker": "prompt_female_high",//默认prompt_female_high女生,prompt_kunkun为男生
"speed": 5,//速度,一般不要动
"num_step":2,//一般不要动
"refresh_cache":1,//是否同样内容缓存,节省流量和加快速度
"number_mode":"digit",//value按值播报,digit按位播报
"buffered":0,//默认不要动
"volume":1 //音量
}
}
}
成功响应示例
{
"code": 0,
"data": {
"device_sn": "W70BAEE51CC",
"msg_id": 247,
"type": 1,
"cmd": "play",
"app_id": "",
"cmd_type": "",
"info": {
"code": 0,
"err_code": 0,
"msg": "TTS started"
}
}
}
| 参数名 | 示例值 | 参数类型 | 参数描述 |
|---|---|---|---|
| code | 0 | Integer | 响应成功 |
| data | - | Object | 数据标签 |
| data.device_sn | W70BAEE51CC | String | 序列号 |
| data.cmd_type | play | String | 命令类型 |
| data.info | - | Object | 数据信息 |
| data.info.code | 0 | Integer | 响应代码 |
| data.info.msg | - | String | 响应消息 |
3.云喇叭设置
接口URL
https://wdev.wmj.com.cn/deviceApi/send请求方式
POST
Content-Type
json
请求Body参数
{
"app_id": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx5",
"app_secret": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx5",
"device_sn": "W70BAEE51CC",
"data":{
"cmd_type":"setting",
"info": {
"volume":3, // 0-9,音量由小到大,默认为中间值
}
}
}
| 参数名 | 示例值 | 参数类型 | 是否必填 | 参数描述 |
|---|---|---|---|---|
| app_id | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx5 | String | 是 | 硬件云app_id |
| app_secret | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx5 | String | 是 | 硬件云app_secret |
| device_sn | W71F9783874 | String | 是 | 序列号 |
| data | - | Object | 是 | 数据标签 |
| data.cmd_type | setting | String | 是 | 命令字 |
| data.info | - | Object | 是 | 数据信息 |
| data.info.volume | 5 | Integer | 否 | 0-9,音量由小到大,默认为中间值 |
成功响应示例
{
"code": 0,
"data": {
"device_sn": "W70BAEE51CC",
"cmd_type": "setting",
"info": {
"code": 0,
"msg": ""
}
}
}
| 参数名 | 示例值 | 参数类型 | 参数描述 |
|---|---|---|---|
| code | 0 | Integer | 响应成功 |
| data | - | Object | 数据标签 |
| data.device_sn | W70F9766718 | String | 序列号 |
| data.cmd_type | setting | String | 命令字 |
| data.info | - | Object | 数据信息 |
| data.info.code | 0 | Integer | 响应成功 |
| data.info.msg | - | String | 响应消息 |
4.重启
接口URL
https://wdev.wmj.com.cn/deviceApi/send
请求方式
POST
Content-Type
json
请求Body参数
{
"app_id":"xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx5",
"app_secret":"xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx5",
"device_sn": "W70BAEE51CC",
"data": {
"cmd_type":"restart",
"info":{}
}
}
| 参数名 | 示例值 | 参数类型 | 是否必填 | 参数描述 |
|---|---|---|---|---|
| app_id | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx5 | String | 是 | 硬件云app_id |
| app_secret | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx5 | String | 是 | 硬件云app_secret |
| device_sn | W70F9783874 | String | 是 | 设备序列号 |
| data | - | Object | 是 | 数据标签 |
| data.cmd_type | restart | String | 是 | 命令字 |
| data.info | - | Object | 是 | 数据信息 |
成功响应示例
{
"code": 0,
"data": {
"device_sn": "W70BAEE51CC",
"cmd_type": "restart",
"info": {
"code": 0,
"msg": ""
}
}
}
| 参数名 | 示例值 | 参数类型 | 参数描述 |
|---|---|---|---|
| code | 0 | Integer | 响应状态0为正常 |
| data | - | Object | 数据标签 |
| data.device_sn | W70F9766718 | String | 设备序列号 |
| data.cmd_type | restart | String | 命令字 |
| data.info | - | Object | 返回数据信息 |
| data.info.code | 0 | Integer | 响应成功 |
| data.info.msg | - | String | 响应消息 |
错误响应示例
{
"code": 1000,
"msg": "没有操作此设备的权限"
}
| 参数名 | 示例值 | 参数类型 | 参数描述 |
|---|---|---|---|
| code | 1000 | Integer | 响应状态0为正常 |
| msg | 没有操作此设备的权限 | String | 消息描述 |
5.查询播放状态
本接口查询喇叭当前是否正在播放。设备固件70B.1.09及以上版本支持。
接口URL
https://wdev.wmj.com.cn/deviceApi/send
请求方式
POST
Content-Type
json
请求Body参数
{
"app_id":"xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx5",
"app_secret":"xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx5",
"device_sn": "W70BAEE51CC",
"data": {
"cmd_type":"get_play_status",
"info":{}
}
}
| 参数名 | 示例值 | 参数类型 | 是否必填 | 参数描述 |
|---|---|---|---|---|
| app_id | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx5 | String | 是 | 硬件云app_id |
| app_secret | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx5 | String | 是 | 硬件云app_secret |
| device_sn | W70BAEE51CC | String | 是 | 序列号 |
| data | - | Object | 是 | 数据标签 |
| data.cmd_type | wifi_config | String | 是 | 命令字 |
| data.info | - | Object | 是 | 数据信息 |
成功响应示例
{
"code": 0,
"data": {
"device_sn": "W70BAEE51CC",
"cmd_type": "get_play_status",
"info": {
"code": 0,
"err_code": 0,
"free_heap": 73304,
"is_loop_playing": false,
"is_playing": false,//true时为正在播放,false时为空闲
"msg": ""
}
}
}
| 参数名 | 示例值 | 参数类型 | 参数描述 |
|---|---|---|---|
| code | 0 | Integer | 响应成功 |
| data | - | Object | 数据标签 |
| data.device_sn | W70BAEE51CC | String | 序列号 |
| data.cmd_type | wifi_config | String | 命令字 |
| data.info | - | Object | 数据信息 |
| data.info.code | 0 | Integer | 响应成功 |
| data.info.msg | - | String | 响应消息 |
| data.info.is_loop_playing | - | bool | true时为正在循环播放,false时为空闲 |
| data.info.is_playing | - | bool | true时为正在播放,false时为空闲 |
6.播放完成回调
喇叭播放完成后,向硬件云配置的回调接口发送以下信息。
{
"device_sn": "W70BXXXXXXX",
"type": 2,
"cmd_type": "tts_complete",
"info": {
"status": "success",
"timestamp": 123456
}
}
7.查询设备信息
接口状态
已完成
接口URL
https://wdev.wmj.com.cn/deviceApi/send
请求方式
POST
Content-Type
json
请求Body参数
{
"app_id":"xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx5",
"app_secret":"xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx5",
"device_sn": "W70BAEE51CC",
"data": {
"cmd_type":"getdevinfo"
}
}
| 参数名 | 示例值 | 参数类型 | 是否必填 | 参数描述 |
|---|---|---|---|---|
| app_id | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx5 | String | 是 | 硬件云app_id |
| app_secret | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx5 | String | 是 | 硬件云app_secret |
| device_sn | W70F9783874 | String | 是 | 设备序列号 |
| data | - | Object | 是 | 数据标签 |
| data.cmd_type | getdevinfo | String | 是 | 命令字 |
成功响应示例
{
"code": 0,
"data": {
"device_sn": "W70BAEE51CC",
"msg_id": 111,
"type": 1,
"cmd": "getdevinfo",
"app_id": "",
"cmd_type": "",
"info": {
"admin_pwd": "admin",
"code": 0,
"device_pwd": "12345687",
"err_code": 0,
"free_heap": 75252,
"hw_ver": "2.0.0",
"iccid": "KGIoT",
"imei": "24:EC:4A:EE:51:CC",
"msg": "",
"net_type": "",
"project": "W70B",
"rssi": -20,
"schedule_enabled_count": 1,
"schedule_total_count": 20,
"speaker": 0,
"speed": 0,
"spiffs_free": 123492,
"spiffs_total": 775841,
"spiffs_used": 652349,
"sw_ver": "70B.1.09",
"time_synced": true,
"tone": 0,
"volume": 4
}
}
}
| 参数名 | 示例值 | 参数类型 | 参数描述 |
|---|---|---|---|
| code | 0 | Integer | 响应状态码,0表示正常/成功 |
| data | - | Object | 响应数据主体 |
| data.device_sn | W70BAEE51CC | String | 设备序列号 |
| data.msg_id | 111 | Integer | 消息ID |
| data.type | 1 | Integer | 消息类型 |
| data.cmd | getdevinfo | String | 命令名称 |
| data.app_id | "" | String | 应用ID(可为空) |
| data.cmd_type | getdevinfo | String | 命令字/命令类型 |
| data.info | - | Object | 设备详细信息 |
| data.info.admin_pwd | "admin" | String | 管理员密码 |
| data.info.code | 0 | Integer | 设备端响应状态码,0表示成功 |
| data.info.device_pwd | "12345687" | String | 设备密码 |
| data.info.err_code | 0 | Integer | 错误码,0表示无错误 |
| data.info.free_heap | 75252 | Integer | 剩余堆内存(字节) |
| data.info.hw_ver | "2.0.0" | String | 硬件版本号 |
| data.info.iccid | "KGIoT" | String | SIM卡ICCID或物理地址标识 |
| data.info.imei | "24:EC:4A:EE:51:CC" | String | IMEI或MAC地址 |
| data.info.msg | "" | String | 响应消息(通常为空) |
| data.info.net_type | "" | String | 网络类型 |
| data.info.project | "W70B" | String | 项目名称或设备型号 |
| data.info.rssi | -20 | Integer | 信号强度值(负值) |
| data.info.schedule_enabled_count | 1 | Integer | 已启用定时任务数 |
| data.info.schedule_total_count | 20 | Integer | 定时任务总容量 |
| data.info.speaker | 0 | Integer | 扬声器状态 |
| data.info.speed | 0 | Integer | 语速(0-9) |
| data.info.spiffs_free | 123492 | Integer | SPIFFS剩余空间(字节) |
| data.info.spiffs_total | 775841 | Integer | SPIFFS总空间(字节) |
| data.info.spiffs_used | 652349 | Integer | SPIFFS已使用空间(字节) |
| data.info.sw_ver | "70B.1.09" | String | 软件版本号 |
| data.info.time_synced | true | Boolean | 时间是否已同步 |
| data.info.tone | 0 | Integer | 语调(0-9) |
| data.info.volume | 4 | Integer | 音量(0-9) |
错误响应示例
{
"code": 1000,
"msg": "没有操作此设备的权限"
}
| 参数名 | 示例值 | 参数类型 | 参数描述 |
|---|---|---|---|
| code | 1000 | Integer | 响应状态0为正常 |
| msg | 没有操作此设备的权限 | String | 消息描述 |
8.开启循环播放
暂无描述
接口状态
已完成
接口URL
https://wdev.wmj.com.cn/deviceApi/send
请求方式
POST
Content-Type
json
请求Body参数
{
"app_id": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx5",
"app_secret": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx5",
"device_sn": "W70F9766718",
"data":{
"cmd_type":"loop_play",
"info": {
"tts":"测试",
"interval":15,
}
}
}
| 参数名 | 示例值 | 参数类型 | 是否必填 | 参数描述 |
|---|---|---|---|---|
| app_id | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx5 | String | 是 | 硬件云app_id |
| app_secret | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx5 | String | 是 | 硬件云app_secret |
| device_sn | W71F9783874 | String | 是 | 序列号 |
| data | - | Object | 是 | 数据标签 |
| data.cmd_type | loop_play | String | 是 | 命令字段 |
| data.info | - | Object | 是 | 数据信息 |
| data.info.tts | 5 | String | 是 | 循环播放TTS文字 |
| data.info.interval | 5 | Integer | 是 | 循环播放间隔,单位: 秒(s) |
成功响应示例
{
"code": 0,
"data": {
"device_sn": "W70F9766718",
"cmd_type": "loop_play",
"info": {
"code": 0,
"msg": ""
}
}
}
| 参数名 | 示例值 | 参数类型 | 参数描述 |
|---|---|---|---|
| code | 0 | Integer | 响应成功 |
| data | - | Object | 数据标签 |
| data.device_sn | W70F9766718 | String | 序列号 |
| data.cmd_type | setting | String | 命令字 |
| data.info | - | Object | 数据信息 |
| data.info.code | 0 | Integer | 响应成功 |
| data.info.msg | - | String | 响应消息 |
9.停止循环播放
暂无描述
接口状态
已完成
接口URL
https://wdev.wmj.com.cn/deviceApi/send
请求方式
POST
Content-Type
json
请求Body参数
{
"app_id": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx5",
"app_secret": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx5",
"device_sn": "W70F9766718",
"data":{
"cmd_type":"loop_stop",
"info": {}
}
}
| 参数名 | 示例值 | 参数类型 | 是否必填 | 参数描述 |
|---|---|---|---|---|
| app_id | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx5 | String | 是 | 硬件云app_id |
| app_secret | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx5 | String | 是 | 硬件云app_secret |
| device_sn | W71F9783874 | String | 是 | 序列号 |
| data | - | Object | 是 | 数据标签 |
| data.cmd_type | loop_stop | String | 是 | 命令字段 |
| data.info | - | Object | 是 | 数据信息 |
成功响应示例
{
"code": 0,
"data": {
"device_sn": "W70F9766718",
"cmd_type": "loop_stop",
"info": {
"code": 0,
"msg": ""
}
}
}
| 参数名 | 示例值 | 参数类型 | 参数描述 |
|---|---|---|---|
| code | 0 | Integer | 响应成功 |
| data | - | Object | 数据标签 |
| data.device_sn | W70F9766718 | String | 序列号 |
| data.cmd_type | setting | String | 命令字 |
| data.info | - | Object | 数据信息 |
| data.info.code | 0 | Integer | 响应成功 |
| data.info.msg | - | String | 响应消息 |
10.查询在线状态
查询设备是否联网在线
接口URL
https://wdev.wmj.com.cn/deviceApi/getOnLine
请求方式
POST
Content-Type
json
请求Body参数
{
"app_id": "{{wmjv2appid}}",
"app_secret": "{{wmjv2appsecret}}",
"device_sn": "W70FF871E13"
}
| 参数名 | 示例值 | 参数类型 | 是否必填 | 参数描述 |
|---|---|---|---|---|
| app_id | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx5 | String | 是 | 硬件云app_id |
| app_secret | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx5 | String | 是 | 硬件云app_secret |
| device_sn | W71F9783874 | String | 是 | 序列号 |
响应示例
{
"code": 0,
"data": {
"on_line": 1 //0为离线、1为在线
},
"msg": "查询成功"
}
11.上电播报
接口URL
https://wdev.wmj.com.cn/deviceApi/send
请求方式
POST
Content-Type
json
请求Body参数
{
"app_id": "{{wmjv2appid}}",
"app_secret": "{{wmjv2appsecret}}",
"device_sn": "W70R49EE878",
"type": 1,
"data": {
"cmd_type": "setting",
"info": {
"pwr_on_enabled": 1, //值为1 开启,值为0关闭
"pwr_on_text": "店主温馨提醒各位车主:大家请注意,洗车余额不够的话,机器会自动停水断电,洗车直接中断。如果还没洗完,请先充值,再重新下单继续洗车。洗车结束之后,一定要先上车、启动车子,再结束订单。订单结束卷帘门打开,30秒之后会自动关门,请大家尽快开车离开,注意安全。店内毛巾免费给大家使用,千万不要带走。也请大家爱护环境卫生,用完工具记得放回原处,感谢大家的理解与配合!",
"pwr_on_delay": 3, //值为秒
"pwr_on_volume": 3
}
}
}
| 参数名 | 示例值 | 参数类型 | 是否必填 | 参数描述 |
|---|---|---|---|---|
| app_id | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx5 | String | 是 | 硬件云app_id |
| app_secret | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx5 | String | 是 | 硬件云app_secret |
| device_sn | W70R49EE878 | String | 是 | 序列号 |
响应示例
{
"code": 0,
"data": {
"device_sn": "W70R49EE878",
"msg_id": 20,
"type": 1,
"cmd": "setting",
"app_id": "",
"cmd_type": "",
"info": {
"admin_pwd": "admin",
"audio_backend": "idf_i2s_es8311_ws_opus",
"audio_heap_free": 121556,
"audio_heap_largest": 102400,
"code": 0,
"device_pwd": "12345687",
"err_code": 0,
"es8311_addr": 24,
"es8311_ok": true,
"file_count": 0,
"free_heap": 123112,
"fw_ota_last_bytes": 0,
"fw_ota_last_error": "",
"fw_ota_last_http_code": 0,
"fw_ota_partition": "",
"fw_ota_url": "",
"hw_ver": "2.0.0",
"iccid": "KGIoT",
"imei": "AC:A7:04:9E:E8:78",
"internal_heap_free": 122920,
"internal_heap_largest": 102400,
"is_live_talk": false,
"is_loop_playing": false,
"is_playing": false,
"last_error": "",
"last_http_code": 0,
"legacy_import_done": 0,
"live_talk_buffered": false,
"live_talk_connected": false,
"live_talk_host": "",
"live_talk_path": "",
"live_talk_port": 0,
"live_talk_sample_rate": 0,
"local_ver": "1.2",
"loop_interval_ms": 0,
"loop_number_mode": "",
"loop_speaker": "",
"loop_speed": 0,
"loop_text": "",
"loop_volume": 0,
"min_free_heap": 118688,
"missing_count": 0,
"msg": "",
"net_type": "wifi",
"ota_url": "http://fm.wmj.com.cn/ota/W70R/audio",
"project": "W70R",
"pwr_on_delay": 300,
"pwr_on_enabled": 0,
"pwr_on_text": "店主温馨提醒各位车主:大家请注意,洗车余额不够的话,机器会自动停水断电,洗车直接中断。如果还没洗完,请先充值,再重新下单继续洗车。洗车结束之后,一定要先上车、启动车子,再结束订单。订单结束卷帘门打开,30秒之后会自动关门,请大家尽快开车离开,注意安全。店内毛巾免费给大家使用,千万不要带走。也请大家爱护环境卫生,用完工具记得放回原处,感谢大家的理解与配合!",
"pwr_on_volume": 3,
"schedule_enabled_count": 0,
"schedule_total_count": 0,
"server_ver": "",
"speaker": 4,
"speed": 5,
"spiffs_free": 309232,
"spiffs_total": 775841,
"spiffs_used": 466609,
"sw_ver": "W70R.2.17",
"switch_status": 0,
"time_synced": false,
"tone": 5,
"tts_http_url": "https://vox.wmj.com.cn",
"tts_ws_host": "voice.wmj.com.cn",
"volume": 0
}
}
}
12.远程升级OTA
升级固件
接口URL
https://wdev.wmj.com.cn/deviceApi/send
请求方式
POST
Content-Type
json
请求Body参数
{
"app_id": "{{wmjv2appid}}",
"app_secret": "{{wmjv2appsecret}}",
"device_sn": "W70CXXXXXXX",
"data": {
"cmd_type": "set_ota",
"info": {
// "url": "http://fm.wmj.com.cn/ota/W70B/W70B_V70B.1.09.bin",联系管理员获取升级包
"hw_ver": "1.0.0",
"sw_ver": "70.1.09"
}
}
}
具体版本号根据需要咨询工作人员,切勿乱填参数导致设备变砖。
响应示例
{
"code": 0,//code为0,等待设备升级重启,2分钟左右。
//其它参数
}
作者:极客师傅 创建时间:2026-01-21 14:56
最后编辑:李汪 更新时间:2026-05-09 13:21
最后编辑:李汪 更新时间:2026-05-09 13:21