喜马拉雅WiFi音响绑定及通讯协议初稿
2015-12-01 12:42
225 查看
喜马拉雅WiFi音响绑定及通讯协议初稿
- 命令字:0x0405
- data区:NULL
设备回复自身信息
- 命令字:0x0305
- 厂商ID:0x0199
- 大分类:0x1b
- 小分类:0x03
App发送心跳包
- 命令字:0x0104
- data区:json
示例:
设备回复心跳
命令字:0x0204
data区:json
示例:
命令字:0x0104
data区:json数据
示例:
2.终端回复App
命令字:0x0204
data区:json数据
示例:
命令字:0x0105
data区:json数据
示例:
点击看大图
[原文链接地址]/article/8647191.html
通讯协议
0x5A | 数据长度 | 框架版本 | 协议类型 | 设备编码 | Mac地址 | 数据帧序列号 | 保留字 | 数据类型 | 数据内容 | 检验码FCS |
---|---|---|---|---|---|---|---|---|---|---|
1字节 | 2字节 | 1字节 | 1字节 | 8字节 | 6字节 | 4字节 | 8字节 | 2字节 | N字节 | 2字节 |
通讯Json格式:
{ "cmd": 0 ,//命令码 "code": 0, //返回码 "msg": "", //状态消息 "data": ...... //数据节点 }
参数说明
参数名称 | 是否必须 | 字段类型 | 参数说明 |
---|---|---|---|
cmd | YES | int | 命令码 |
code | NO | int | 返回码 |
msg | NO | String | 状态消息 |
data | NO | String | 数据节点 |
全局命令码
每一种操作对用一个命令码,用作标识指令。全局命令码说明如下:
命令码(十六进制) | 十进制 | 说明 |
---|---|---|
0x0001 | 1 | 添加歌曲 |
0x0002 | 2 | App查询歌曲列表 |
0x0003 | 3 | 升级操作 |
0x0004 | 4 | 播放 |
0x0005 | 5 | 关机 |
0x0006 | 6 | 静音/解除静音 |
0x0007 | 7 | 音量+ |
0x0008 | 8 | 音量- |
0x0009 | 9 | 切换aux状态 |
0x000a | 10 | 下一曲 |
0x000b | 11 | 上一曲 |
0x000c | 12 | 暂停 |
0x000d | 13 | App查询播放状态 |
0x000e | 14 | WIFI 无线简易连接 |
0x000f | 15 | 设备回复心跳 |
0x400f | 16399 | App发送心跳 |
0x0011 | 17 | palyMode(顺序播放/随机播放/列表循环/单曲循环/) |
0x0012 | 18 | 音量设置(直接设置音量值) |
0x0013 | 19 | 设备推送播放状态 |
0x0014 | 20 | 设备推送播放列表 |
0x0015 | 21 | 拖拽进度条 |
全局返回码
每次调用接口时,可能获得正确或错误的返回码,可以根据返回码信息调试接口,排查错误。全局返回码说明如下:
0 | 请求成功 |
---|---|
200 | 无错误 |
400 | 不支持此接口 |
401 | JSON数据解析错误 |
示例
字符串
{ "cmd": 0x0001 ,//命令码 "code": 0, //返回码 "msg": "", //状态消息 "data": "This is string" //数据节点 }
整形参数
{ "cmd": 0x0001 ,//命令码 "code": 0, //返回码 "msg": "", //状态消息 "data": 1 //数据节点 }
对象
{ "cmd": 0x0001 ,//命令码 "code": 0, //返回码 "msg": "", //状态消息 "data": { "ssid":"TP-link", //连接的路由名称 "password":"12345678", //路由密码,需要加密 } }
数组
{ "cmd": 0x001 ,//命令码 "code": 0, //返回码 "msg": "", //状态消息 "data":[ { "id" : "0" "name" : “xxxx", "artist" : “xxxx", "album_title": “xxxx", "cover_url_small”:“xxxx", "cover_url_middle":"xxxx", "cover_url_large":"xxxx", "url":"xxxxxxxxx" {详细规格见规格说明url部分}, }, { "id":"1" "name":"xxxx1", "artist":"xxxx1", "album":"xxxx1", "cover_url_small":"xxxx", "cover_url_middle":"xxxx", "cover_url_large":"xxxx", "url":"xxxxxxxxxx"{详细规格见规格说明url部分}, } ] }
指令说明
一、设备基础指令
App扫描设备0x5A | 数据长度 | 框架版本 | 协议类型 | 设备编码 | Mac地址 | 数据帧序列号 | 保留字 | 数据类型 | 数据内容 | 检验码FCS |
---|---|---|---|---|---|---|---|---|---|---|
5A | 0022 | 40 | 01 | 0000000000000000 | 000000000000 | 20000000 | 0000000000000000 | 0405 | data | 381a |
- data区:NULL
设备回复自身信息
0x5A | 数据长度 | 框架版本 | 协议类型 | 设备编码 | Mac地址 | 数据帧序列号 | 保留字 | 数据类型 | 数据内容 | 检验码FCS |
---|---|---|---|---|---|---|---|---|---|---|
5A | xxxx | 40 | 01 | 00000199001b0300 | d8f710e019b0 | 00000000 | 0000000000000000 | 0305 | data | xxxx |
- 厂商ID:0x0199
- 大分类:0x1b
- 小分类:0x03
App发送心跳包
0x5A | 数据长度 | 框架版本 | 协议类型 | 设备编码 | Mac地址 | 数据帧序列号 | 保留字 | 数据类型 | 数据内容 | 检验码FCS |
---|---|---|---|---|---|---|---|---|---|---|
5A | xxxx | 40 | 01 | 0000000000000000 | 000000000000 | 20000000 | 0000000000000000 | 0104 | data | xxxx |
- data区:json
示例:
{ "cmd": 0x400f ,//命令码 "code": 0, //返回码 "msg": "", //状态消息 "data": ...... //数据节点 }
设备回复心跳
0x5A | 数据长度 | 框架版本 | 协议类型 | 设备编码 | Mac地址 | 数据帧序列号 | 保留字 | 数据类型 | 数据内容 | 检验码FCS |
---|---|---|---|---|---|---|---|---|---|---|
5A | xxxx | 40 | 01 | 0000000000000000 | 000000000000 | 00000000 | 0000000000000000 | 0204 | data | xxxx |
data区:json
示例:
{ "cmd": 0x000f ,//命令码 "code": 0, //返回码 "msg": "", //状态消息 "data": { "deviceId": "SPK设备序列号" } }
二、App主动控制终端指令
1.App控制终端0x5A | 数据长度 | 框架版本 | 协议类型 | 设备编码 | Mac地址 | 数据帧序列号 | 保留字 | 数据类型 | 数据内容 | 检验码FCS |
---|---|---|---|---|---|---|---|---|---|---|
5A | xxxx | 40 | 01 | 0000000000000000 | 000000000000 | 00000000 | 0000000000000000 | 0104 | data | xxxx |
data区:json数据
示例:
{ "cmd": 0x00xx ,//命令码 "code": 0, //返回码 "msg": "", //状态消息 "data": ...... //数据节点 }
2.终端回复App
0x5A | 数据长度 | 框架版本 | 协议类型 | 设备编码 | Mac地址 | 数据帧序列号 | 保留字 | 数据类型 | 数据内容 | 检验码FCS |
---|---|---|---|---|---|---|---|---|---|---|
5A | xxxx | 40 | 01 | 0000000000000000 | 000000000000 | 00000000 | 0000000000000000 | 0204 | data | xxxx |
data区:json数据
示例:
{ "cmd": 0x00xx ,//命令码 "code": 0, //返回码 "msg": "", //状态消息 "data": ...... //数据节点 }
三、终端主动发送控制数据给App
1.周期上传运行数据0x5A | 数据长度 | 框架版本 | 协议类型 | 设备编码 | Mac地址 | 数据帧序列号 | 保留字 | 数据类型 | 数据内容 | 检验码FCS |
---|---|---|---|---|---|---|---|---|---|---|
5A | xxxx | 40 | 01 | 0000000000000000 | 000000000000 | 00000000 | 0000000000000000 | 0105 | data | xxxx |
data区:json数据
示例:
{ "cmd": 0x0013 ,//命令码 "code": 0, //返回码 "msg": "", //状态消息 "data": ...... //数据节点 }
音箱数据模型
一、歌单
参数说明参数名称 | 是否必须 | 字段类型 | 参数说明 |
---|---|---|---|
id | 是 | int | 歌曲ID |
name | 否 | string | 演唱者 |
artist | 否 | String | 艺术家 |
album_title | 否 | String | 专辑标题 |
lrc_id | 否 | String | 歌词ID |
image_url_small | 否 | String | 歌曲海报1 |
image_url_middle | 否 | String | 歌曲海报2 |
image_url_large | 否 | String | 歌曲海报3 |
mac | 否 | String | Mac地址 |
total_time | 否 | int | 歌曲时长 |
album_id | 否 | int | 专辑ID |
utype | 否 | int | 比如 虾米音乐 考虑 喜马拉雅 之类的 |
uri | 是 | int | 歌曲URL |
downloadurl | 是 | String | 下载url |
二、播放状态
参数说明参数名称 | 是否必须 | 字段类型 | 参数说明 |
---|---|---|---|
id 是 | int | 歌曲ID | |
mtype | 是 | String | 虾米,百度云盘,本地音乐… |
p_status | 否 | int | “0/1/2/3/4”, //准备播放,播放,暂停,停止,播放结束(用于网络收音机) |
type | 否 | String | 当前播放源(预设preset),收藏,实时推送 |
name | 否 | string | 演唱者 |
artist | 否 | String | 艺术家 |
album | 否 | String | 专辑 |
next_id | 是 | int | 下一首歌曲id |
total_time | 是 | int | 歌曲总时间 |
current_time | 是 | int | 歌曲当前播放时间 |
play_mode | 否 | int | 模式(//顺序播放/随机播放列表循环/单曲循环/) |
volume | 是 | int | 音量 |
绑定流程
点击看大图
[原文链接地址]/article/8647191.html
相关文章推荐
- 高精度减法
- OpenDJ LDAP
- POJ 3624 Charm Bracelet
- android 获得电池状态
- 手机收不到验证码问题
- mahout kmeans 例子
- jQuery Validate扩展验证方法
- OpenCV + Eclipse CDT + MinGW超爽使用体验以及常见问题合辑
- poj 1236 Network of Schools(强连通分量 Tarjan算法)
- POJ 3628 Bookshelf 2
- 20135310陈巧然 20135305姚歌 实验四:外设驱动程序设计
- yum 安装软件时报Public key for * is not installed
- JS中的bind方法
- mahout 安装配置
- unity3D Text 使用shader
- 20135310陈巧然 20135305姚歌 实验一:开发环境的熟悉
- js的浮点数加法
- 数据库有数据,但查询不到数据,没查到还爆空指针
- 【linux】 Linux cp 实现强行覆盖
- Android Context小总结