**Table of Contents** *generated with [DocToc](https://github.com/thlorenz/doctoc)* - [mqtt设备控制命令](#mqtt%E8%AE%BE%E5%A4%87%E6%8E%A7%E5%88%B6%E5%91%BD%E4%BB%A4) - [1.设备的在线和离线](#1%E8%AE%BE%E5%A4%87%E7%9A%84%E5%9C%A8%E7%BA%BF%E5%92%8C%E7%A6%BB%E7%BA%BF) - [1.1 设备端](#11-%E8%AE%BE%E5%A4%87%E7%AB%AF) - [1.2 手机端](#12-%E6%89%8B%E6%9C%BA%E7%AB%AF) - [2 消息的订阅和发布](#2-%E6%B6%88%E6%81%AF%E7%9A%84%E8%AE%A2%E9%98%85%E5%92%8C%E5%8F%91%E5%B8%83) - [2.1 主题topic和内容payload的说明](#21-%E4%B8%BB%E9%A2%98topic%E5%92%8C%E5%86%85%E5%AE%B9payload%E7%9A%84%E8%AF%B4%E6%98%8E) - [2.2 手机发布指令给设备](#22-%E6%89%8B%E6%9C%BA%E5%8F%91%E5%B8%83%E6%8C%87%E4%BB%A4%E7%BB%99%E8%AE%BE%E5%A4%87) - [2.2.1升级update](#221%E5%8D%87%E7%BA%A7update) - [2.2.2 播放play](#222-%E6%92%AD%E6%94%BEplay) - [2.2.3 下一曲 next](#223-%E4%B8%8B%E4%B8%80%E6%9B%B2-next) - [2.2.4 上一曲 previous](#224-%E4%B8%8A%E4%B8%80%E6%9B%B2-previous) - [2.2.5 暂停 pause](#225-%E6%9A%82%E5%81%9C-pause) - [2.2.6 停止播放 stop](#226-%E5%81%9C%E6%AD%A2%E6%92%AD%E6%94%BE-stop) - [2.2.7 调整播放进度 seek_media](#227-%E8%B0%83%E6%95%B4%E6%92%AD%E6%94%BE%E8%BF%9B%E5%BA%A6-seek_media) - [2.2.8 获取播放进度和播放信息 get_position](#228-%E8%8E%B7%E5%8F%96%E6%92%AD%E6%94%BE%E8%BF%9B%E5%BA%A6%E5%92%8C%E6%92%AD%E6%94%BE%E4%BF%A1%E6%81%AF-get_position) - [2.2.9 ~~获取播放进度和播放信息 get_play_info~~](#229-%E8%8E%B7%E5%8F%96%E6%92%AD%E6%94%BE%E8%BF%9B%E5%BA%A6%E5%92%8C%E6%92%AD%E6%94%BE%E4%BF%A1%E6%81%AF-get_play_info) - [2.2.10 设置音量 volume_set](#2210-%E8%AE%BE%E7%BD%AE%E9%9F%B3%E9%87%8F-volume_set) - [2.2.11 得到设备音量 volume_get](#2211-%E5%BE%97%E5%88%B0%E8%AE%BE%E5%A4%87%E9%9F%B3%E9%87%8F--volume_get) - [2.2.12 设置静音 mute_set](#2212-%E8%AE%BE%E7%BD%AE%E9%9D%99%E9%9F%B3-mute_set) - [2.2.13 获取静音状态mute_get](#2213-%E8%8E%B7%E5%8F%96%E9%9D%99%E9%9F%B3%E7%8A%B6%E6%80%81mute_get) - [2.2.14 设置低电量提示开关 low_battery_notify_set](#2214-%E8%AE%BE%E7%BD%AE%E4%BD%8E%E7%94%B5%E9%87%8F%E6%8F%90%E7%A4%BA%E5%BC%80%E5%85%B3-low_battery_notify_set) - [2.2.15 得到设备信息 get_dev_info](#2215-%E5%BE%97%E5%88%B0%E8%AE%BE%E5%A4%87%E4%BF%A1%E6%81%AF-get_dev_info) - [2.2.16 设置闹钟 alert_set](#2216-%E8%AE%BE%E7%BD%AE%E9%97%B9%E9%92%9F-alert_set) - [2.2.17 更新频道 channel_update](#2217-%E6%9B%B4%E6%96%B0%E9%A2%91%E9%81%93-channel_update) - [2.2.18 修改设备名称 device_name_set](#2218-%E4%BF%AE%E6%94%B9%E8%AE%BE%E5%A4%87%E5%90%8D%E7%A7%B0-device_name_set) - [2.2.19 通知设备更新临时频道 m3u_update](#2219-%E9%80%9A%E7%9F%A5%E8%AE%BE%E5%A4%87%E6%9B%B4%E6%96%B0%E4%B8%B4%E6%97%B6%E9%A2%91%E9%81%93-m3u_update) - [2.2.20 设置暂停后自动休眠 pause_shutdown_set](#2220-%E8%AE%BE%E7%BD%AE%E6%9A%82%E5%81%9C%E5%90%8E%E8%87%AA%E5%8A%A8%E4%BC%91%E7%9C%A0--pause_shutdown_set) - [2.2.21 获取设备名称 get_dev_name](#2221-%E8%8E%B7%E5%8F%96%E8%AE%BE%E5%A4%87%E5%90%8D%E7%A7%B0-get_dev_name) - [2.2.22 开始DM云小薇授权 start_dm_auth](#2222-%E5%BC%80%E5%A7%8Bdm%E4%BA%91%E5%B0%8F%E8%96%87%E6%8E%88%E6%9D%83-start_dm_auth) - [2.2.23 向设备发送DM云小薇clientId和authRespInfo信息 send_dm_clientid](#2223-%E5%90%91%E8%AE%BE%E5%A4%87%E5%8F%91%E9%80%81dm%E4%BA%91%E5%B0%8F%E8%96%87clientid%E5%92%8Cauthrespinfo%E4%BF%A1%E6%81%AF-send_dm_clientid) - [2.2.24 向设备发送TTS语音播报开启关闭功能 set_tts_enable](#2224-%E5%90%91%E8%AE%BE%E5%A4%87%E5%8F%91%E9%80%81tts%E8%AF%AD%E9%9F%B3%E6%92%AD%E6%8A%A5%E5%BC%80%E5%90%AF%E5%85%B3%E9%97%AD%E5%8A%9F%E8%83%BD-set_tts_enable) - [2.2.25 获取设备的云小薇的Authorization(AccessToken) get_dm_auth](#2225-%E8%8E%B7%E5%8F%96%E8%AE%BE%E5%A4%87%E7%9A%84%E4%BA%91%E5%B0%8F%E8%96%87%E7%9A%84authorizationaccesstoken-get_dm_auth) - [2.3 设备发送/回复消息给手机](#23-%E8%AE%BE%E5%A4%87%E5%8F%91%E9%80%81%E5%9B%9E%E5%A4%8D%E6%B6%88%E6%81%AF%E7%BB%99%E6%89%8B%E6%9C%BA) - [2.3.1 设备发送播放信息给手机 get_position](#231-%E8%AE%BE%E5%A4%87%E5%8F%91%E9%80%81%E6%92%AD%E6%94%BE%E4%BF%A1%E6%81%AF%E7%BB%99%E6%89%8B%E6%9C%BA-get_position) - [2.3.2 设备发送设备信息给手机 get_dev_info](#232--%E8%AE%BE%E5%A4%87%E5%8F%91%E9%80%81%E8%AE%BE%E5%A4%87%E4%BF%A1%E6%81%AF%E7%BB%99%E6%89%8B%E6%9C%BA-get_dev_info) - [2.3.3 设备发送设备名称给手机 get_dev_name](#233-%E8%AE%BE%E5%A4%87%E5%8F%91%E9%80%81%E8%AE%BE%E5%A4%87%E5%90%8D%E7%A7%B0%E7%BB%99%E6%89%8B%E6%9C%BA-get_dev_name) - [2.3.4 设备上报播放状态 play_state](#234-%E8%AE%BE%E5%A4%87%E4%B8%8A%E6%8A%A5%E6%92%AD%E6%94%BE%E7%8A%B6%E6%80%81-play_state) - [2.3.5 设备上报音量 volume_get](#235-%E8%AE%BE%E5%A4%87%E4%B8%8A%E6%8A%A5%E9%9F%B3%E9%87%8F-volume_get) - [2.3.6 设备上报网络类型 get_net_type](#236-%E8%AE%BE%E5%A4%87%E4%B8%8A%E6%8A%A5%E7%BD%91%E7%BB%9C%E7%B1%BB%E5%9E%8B-get_net_type) - [2.3.7 设备向app发送开始DM云小薇授权 start_dm_auth](#237-%E8%AE%BE%E5%A4%87%E5%90%91app%E5%8F%91%E9%80%81%E5%BC%80%E5%A7%8Bdm%E4%BA%91%E5%B0%8F%E8%96%87%E6%8E%88%E6%9D%83-start_dm_auth) - [2.3.8 设备向app发送云小薇的Authorization(AccessToken) get_dm_auth](#238-%E8%AE%BE%E5%A4%87%E5%90%91app%E5%8F%91%E9%80%81%E4%BA%91%E5%B0%8F%E8%96%87%E7%9A%84authorizationaccesstoken-get_dm_auth) # mqtt设备控制命令 ## 1.设备的在线和离线 ### 1.1 设备端 设备需要在上线时候发布状态信息到 topic:` /${uuid}/status/onoffline` **这里的uuid指的是设备的唯一标识,例如iccid或者deviceId** 示例 :设备发布的主题topic, `/AIrSMArT_044997909151/status/onoffline ` 如在线会发布 payload:`{"uuid":"AIrSMArT_044997909151", "state":"online"}` 离线会发布 payload:`{"uuid":"AIrSMArT_044997909151", "state":"offline"}` ### 1.2 手机端 手机订阅设备状态主题 `/${uuid}/status/onoffline` 这里的uuid还是设备的uuid 示例: 手机端订阅主题topic, `/AIrSMArT_044997909151/status/onoffline ` 如在线会收到 `{"uuid":"AIrSMArT_044997909151", "state":"online"}` 离线会收到 ` {"uuid":"AIrSMArT_044997909151", "state":"offline"}` ## 2 消息的订阅和发布 ### 2.1 主题topic和内容payload的说明 topic: `/${uuid}/user/sub_control` 手机端发布,此uuid为设备端的uuid topic: `/${uuid}/user/pub_response`手机端订阅,此uuid为设备端的uuid topic: `/${uuid}/user/sub_control` 设备端订阅,此uuid为设备端的uuid topic: `/${uuid}/user/pub_response`设备端发布,此uuid为设备端的uuid payload: | 参数名称 | 格式 | 是否必须 | 说明| | --- | --- |--- |--- | | DstDeviceName | string |是 |目的设备/手机的uuid| | SrcDeviceName | string | 是|发送设备/手机的uuid| | type | string |是 |控制类型见[2.2](#22-%E6%89%8B%E6%9C%BA%E5%8F%91%E5%B8%83%E6%8C%87%E4%BB%A4%E7%BB%99%E8%AE%BE%E5%A4%87)和[2.3](#23-%E8%AE%BE%E5%A4%87%E5%8F%91%E9%80%81%E5%9B%9E%E5%A4%8D%E6%B6%88%E6%81%AF%E7%BB%99%E6%89%8B%E6%9C%BA)| | other | json |否 |type对应的消息数据| ### 2.2 手机发布指令给设备 手机发布消息的主题topic: `/${uuid}/user/sub_control`, 设备端订阅主题topic: `/${uuid}/user/sub_control`, **此uuid都为设备端的uuid** 以下为手机发布消息的payload: | 参数名称 | 格式 |是否必填|说明| | --- | --- |--- |--- | | DstDeviceName | string| 是|**目标设备的uuid** | | SrcDeviceName | string| 是| **手机的uuid** | | type | string| 是| 命令类型见以下2.2.1到2.2.last| #### 2.2.1升级update | 标题 | 格式 |是否必填|说明| | --- | --- |--- |--- | | update_file | string |是|升级文件的URL| 完整示例: ```json { "DstDeviceName": "device_uuid", "SrcDeviceName": "mobile_uuid", "type": "update", "other": { "product_mode": "MW-X(4G)", "version": "0.0.5", "update_file": "url" } } ``` #### 2.2.2 播放play 可以不带other,不带other表示直接播放设备当前的歌曲 完整示例: ```json { "DstDeviceName": "device_uuid", "SrcDeviceName": "mobile_uuid", "type": "play", "other": { "url": "", "media_data": "", "user_id": "1756", "timestamp": "0", "channel_id": 13, "songAlbumID":"", "resource_from": "0//11//1582620219539591170//", "order": "0", "version": 3, "is_debug": 1 } } ``` #### 2.2.3 下一曲 next 完整示例: ```json { "DstDeviceName": "device_uuid", "SrcDeviceName": "mobile_uuid", "type": "next", } ``` #### 2.2.4 上一曲 previous 完整示例: ```json { "DstDeviceName": "device_uuid", "SrcDeviceName": "mobile_uuid", "type": "previous", } ``` #### 2.2.5 暂停 pause 完整示例: ```json { "DstDeviceName": "device_uuid", "SrcDeviceName": "mobile_uuid", "type": "pause", } ``` #### 2.2.6 停止播放 stop 完整示例: ```json { "DstDeviceName": "device_uuid", "SrcDeviceName": "mobile_uuid", "type": "stop", } ``` #### 2.2.7 调整播放进度 seek_media | 参数名称 | 格式 | 是否必须|说明 | | --- | --- | --- | --- | | position | string | 是 | 播放进度(单位秒)| 完整示例: ```json { "DstDeviceName": "device_uuid", "SrcDeviceName": "mobile_uuid", "type": "seek_media", "other": { "position": "120" } } ``` #### 2.2.8 获取播放进度和播放信息 get_position 设备收到指令后会把设备播放的状态和进度回复给手机,见[2.3.1 设备发送播放信息给手机 get_position](#231-%E8%AE%BE%E5%A4%87%E5%8F%91%E9%80%81%E6%92%AD%E6%94%BE%E4%BF%A1%E6%81%AF%E7%BB%99%E6%89%8B%E6%9C%BA-get_position) 完整示例: ```json { "DstDeviceName": "device_uuid", "SrcDeviceName": "mobile_uuid", "type": "get_position", } ``` #### 2.2.9 ~~获取播放进度和播放信息 get_play_info~~ 设备收到指令后会把设备播放的状态和进度回复给手机 **因为发送mqtt消息要钱,就把播放状态并入到了 获取播放文件的进度。(以前是使用了阿里云的要钱)** 完整示例: ```json { "DstDeviceName": "device_uuid", "SrcDeviceName": "mobile_uuid", "type": "get_play_info", } ``` #### 2.2.10 设置音量 volume_set | 参数名称 | 格式 |是否必填|说明| | --- | --- |--- |--- | | volume | int| 是|设备音量值,范围(0-100) | 完整示例: ```json { "DstDeviceName": "device_uuid", "SrcDeviceName": "mobile_uuid", "type": "volume_set", "other": { "volume": 99 } } ``` #### 2.2.11 得到设备音量 volume_get 设备收到此指令后会把设备的音量回复给手机。 完整示例: ```json { "DstDeviceName": "device_uuid", "SrcDeviceName": "mobile_uuid", "type": "volume_get", } ``` #### 2.2.12 设置静音 mute_set | 参数名称 | 格式 |是否必填|说明| | --- | --- |--- |--- | | mute | int| 是|是否静音,取值0,1(0为不静音,1为静音) | 完整示例: ```json { "DstDeviceName": "device_uuid", "SrcDeviceName": "mobile_uuid", "type": "mute_set", "other": { "mute": 1 } } ``` #### 2.2.13 获取静音状态mute_get 设备收到此指令后会把设备是否静音回复给手机。 完整示例: ```json { "DstDeviceName": "device_uuid", "SrcDeviceName": "mobile_uuid", "type": "mute_get", } ``` #### 2.2.14 设置低电量提示开关 low_battery_notify_set | 参数名称 | 格式 |是否必填|说明| | --- | --- |--- |--- | | low_battery_notify | int| 是|低电量是否提示,0不提示,1提示 | 完整示例: ```json { "DstDeviceName": "device_uuid", "SrcDeviceName": "mobile_uuid", "type": "low_battery_notify_set", "other": { "low_battery_notif": 1 } } ``` #### 2.2.15 得到设备信息 get_dev_info 设备收到指令后会把设备信息回复给手机,设备回复信息见[2.3.2 设备发送设备信息给手机 get_dev_info](#232--%E8%AE%BE%E5%A4%87%E5%8F%91%E9%80%81%E8%AE%BE%E5%A4%87%E4%BF%A1%E6%81%AF%E7%BB%99%E6%89%8B%E6%9C%BA-get_dev_info) 完整示例: ```json { "DstDeviceName": "device_uuid", "SrcDeviceName": "mobile_uuid", "type": "get_dev_info", } ``` #### 2.2.16 设置闹钟 alert_set | 参数名称 | 格式 |是否必填|说明| | --- | --- |--- |--- | | enable | string| 是 | 是否启用 | | alarm_id | string| 0/1 | 区分闹钟 | | week_actives | string| 是| 从周日到周六的闹钟重复状态。 | | operation | string| 是| on/off 打开关闭 | | current_timestamp | string| 是|当前时间戳,如果onoff时间戳在当前时间以前,当前时间戳设置为第二天00:00:00 | ```json { "DstDeviceName":"device_uuid", "SrcDeviceName": "mobile_uuid", "type": "alert_set", "other": { "enable": "1", "action": "update", "alarm_id": "0", "alarm_name": "close", "operation": "off", "weekly_repeat": "0", "song_uri": "-1", "week_actives": [0, 0, 0, 0, 0, 0, 0], "current_timestamp": "2023-04-11 11:13:02", "on_off_timestamp": "11:23:02" } } ``` #### 2.2.17 更新频道 channel_update | 参数名称 | 格式 |是否必填|说明| | --- | --- |--- |--- | | update_type | string| 是|all:更新所有/sigle更新当前频道/audition将临时试听替换到正式频道 | | channel_id | string| 是|需要操作的频道ID | ```json { "DstDeviceName": "device_uuid", "SrcDeviceName": "mobile_uuid", "type": "channel_update", "other": { "user_id": "5", "channel_id": "1", "version": 3, "is_debug": 1 } } ``` #### 2.2.18 修改设备名称 device_name_set ```json { "DstDeviceName": "device_uuid", "SrcDeviceName": "mobile_uuid", "type": "device_name_set", "other": { "dev_name": "xxx",//设备名称 } } ``` #### 2.2.19 通知设备更新临时频道 m3u_update 小程序文件读写需要权限,小程序更新零时频道不用此方法,设备可以通过后台的接口获取到临时频道的音频数据 ```json { "DstDeviceName": "device_uuid", "SrcDeviceName": "mobile_uuid", "type": "m3u_update", "other": { "url": "", "user_id": "5", "channel_id":"3", "order": 0 } } ``` #### 2.2.20 设置暂停后自动休眠 pause_shutdown_set | 参数名称 | 格式 |是否必填|说明| | --- | --- |--- |--- | | time | int| 是|单位秒,如果为-1表示关闭自动休眠 | ```json { "DstDeviceName": "device_uuid", "SrcDeviceName": "mobile_uuid", "type": "pause_shutdown_set", "other": { "time": 60,//单位秒,如果为-1表示关闭自动休眠 } } ``` #### 2.2.21 获取设备名称 get_dev_name 设备收到此指令后会把设备名称回复给手机。 完整示例: ```json { "DstDeviceName": "device_uuid", "SrcDeviceName": "mobile_uuid", "type": "get_dev_name", } ``` #### 2.2.22 开始DM云小薇授权 start_dm_auth 设备收到此命令后判断是否需要[云小薇授权](https://dingdang.qq.com/doc/page/365),如果设备已经授权过则返回0,需要授权返回1(并返回authReqInfo和dsn),需要QQ音乐授权返回2 完整示例: ```json { "DstDeviceName": "device_uuid", "SrcDeviceName": "mobile_uuid", "type": "start_dm_auth", "other": { "version":2 "is_debug":2 } } ``` #### 2.2.23 向设备发送DM云小薇clientId和authRespInfo信息 send_dm_clientid | 参数名称 | 格式 |是否必填|说明| | --- | --- |--- |--- | | clientId | string| 是|云小微语音服务用于标识一个设备的id,通过DMSDK接口获取 | | authRespInfo | string| 是|DMSDK通过绑定设备接口获取到的JSON字符串,需要将这串信息原样传给TVSSDK,完成最终的绑定授权 | ```json { "DstDeviceName": "device_uuid", "SrcDeviceName": "mobile_uuid", "type": "send_dm_clientid", "other": { "clientId": "xxxxxx", "authRespInfo": { "authCode": "auc_9d3858b0f0f62be6f9921d0d34d3a898beb025c3", "sessionId": "1681181481" }, "version": 3, "is_debug": 1 } } ``` #### 2.2.24 向设备发送TTS语音播报开启关闭功能 set_tts_enable | 参数名称 | 格式 |是否必填|说明| | --- | --- |--- |--- | | enable | int| 如果为1表示启用 2表示禁用| ```json { "DstDeviceName": "device_uuid", "SrcDeviceName": "mobile_uuid", "type": "set_tts_enable", "other": { "enable": 1 } } ``` #### 2.2.25 获取设备的云小薇的Authorization(AccessToken) get_dm_auth ```json { "DstDeviceName": "device_uuid", "SrcDeviceName": "mobile_uuid", "type": "get_dm_auth", } ``` #### 2.2.26 向设备发送自动切换网络模式开启关闭功能 set_netmode_auto | 参数名称 | 格式 |是否必填|说明| | --- | --- |--- |--- | | enable | int| 如果为1表示启用 0表示禁用| ```json { "DstDeviceName": "device_uuid", "SrcDeviceName": "mobile_uuid", "type": "set_netmode_auto", "other": { "enable": 1 } } ``` ### 2.3 设备发送/回复消息给手机 设备发布消息的主题topic: `/${uuid}/user/pub_response`, 手机端订阅主题topic: `/${uuid}/user/pub_response`, **此uuid都为设备端的uuid** 说明:2.2的上述设备控制操作,都应该有回复 以下为设备发布消息的payload: | 参数名称 | 格式 |是否必填|说明| | --- | --- |--- |--- | | DstDeviceName | string| 是| **目标手机的uuid** | | SrcDeviceName | string| 是| **设备的uuid** | | type | string| 是| 要回复的对应的类型,如回复volume_set 则写volume_set | | code | int| 是| 操作状态码,200代表成功,其他代表失败 | | reseaon | string| 否| 如果200,可以不带,其他必须带错误原因 | **注意:这里是设备端发布的payload,注意和手机端发布的payload的DstDeviceName字段和SrcDeviceName字段的区分** code 值描述: | 错误码(code) | 错误原因(reseaon) | | --- | --- | | -100| DstDeviceName不一致(设备端本地保存的DstDeviceName和收到的SrcDeviceName不一致) | **注意:手机端发送play等命令,设备端收到将会把SrcDeviceName(手机的uuid)保存到本地为DstDeviceName,然后其他手机发送其他命令过来,因为设备端保存到本地的手机的uuid和收到的SrcDeviceName不一致,设备端应回复code为-100。** #### 2.3.1 设备发送播放信息给手机 get_position 场景描述: 1. 手机端发送控制类型 get_position,设备回复播放信息给手机端。 2. 设备端按键切换歌曲,播放完成自动切歌,设备端都需要主动上报播放信息给手机端。 | 参数名称 | 格式 |是否必填|说明| | --- | --- |--- |--- | | RelTime | number| 是| 播放进度单位秒| | Duration | number| 是| 节目时长单位秒 | | url | string| 否| 节目url | | PlayState | number| 是| 播放状态:1播放,2暂停,3停止,4缓冲。| | songInfoID | string| 是|歌曲id | | title | string| 是| 节目标题 | | channel | number| 是| 频道编号 | | PlayMode | number| 是| 播放模式 | | songFrom | string| 是| 歌曲来源 | | songAlbumID | string| 是| 歌曲专辑id | | artist | string| 是| 歌手/主播名称 | | albumURI | string| 是| 专辑图片地址 | | SongType | number| 是| 音频类型 和服务器的枚举audio_type一致 | | userid | string| 是| 用户id ```json { "DstDeviceName": "mobile_uuid", "SrcDeviceName": "device_uuid", "code": 200, "type": "get_position", "other": { "songInfoID": "5010396515297942022", "songFrom": "2", "songAlbumID": "15910549044569856", "artist": "荔枝FM", "title": "哪一位上帝会原谅我们呢?", "url": "http://cdn.lizhi.fm/audio/2018/11/19/5010396515297942022_hd.mp3", "albumURI": "http://cdn.lizhi.fm/audio_cover/2018/11/19/2704554347415155207_320x320.jpg", "Duration": 1280, "RelTime": 875, "channel": 7, "SongType":1,//音频类型 和服务器的枚举audio_type一致 "PlayState":3,// 播放状态:1播放,2暂停,3停止,4缓冲。 "PlayMode": 0, //播放模式:0:REPEAT_ALL列表循环,1:REPEAT_ONE单曲循环2:SHUFFLE 随机播放 "userid": "1756" } } ``` #### 2.3.2 设备发送设备信息给手机 get_dev_info 场景描述: 手机端发送控制类型 get_dev_info,设备回复设备信息给手机端。 | 参数名称 | 格式 |是否必填|说明| | --- | --- |--- |--- | | Guid | string | 是 |设备的唯一标识码uuid| | userid | string | 是 |用户id| | ProdModel | string| 是| 产品型号 | | sim_iccid | string| 否| sim_iccid| | esim_iccid | string| 否| esim_iccid | | SoftVer | string| 是| 固件版本号 | | Firmware | string| 是| 方案商名称 | | Power | number| 是| 电量百分比(0-100)>100表示充电中 | | lowBatteryNtf | number| 是| 低电量提醒0不提示,1提示| | Volume | number| 是| 设备音量| | Mute | number| 是| 设备是否静音,取值0,1(0为不静音,1为静音) | | pauseShutdown | number| 是| 暂停自动休眠时间,单位秒,如果为-1表示关闭自动休眠| | PlayState | number| 否| 播放状态:1播放,2暂停,3停止,4缓冲。| | PlayMode | number| 否| 播放模式 | | devName | String| 是| 设备名称| | deviceId | String| 否| deviceId| | deviceSecret | String| 否| deviceSecret| | is_tts_enable | number| TTS语音播放是否启用 ,1表示启用,2表示禁用 | SignalQuality | number| 否| 信号质量 | | CardIndex | number| 是|0是内卡,1是外卡 | | CardSum | number| 是| 卡号数,一般是4G的内外卡 | | NetModel | number| 是|当前MQTT设备的联网方式 ,1表示4G,2表示Wi-Fi | is_netmode_auto |number| 否| 当前MQTT设备是否自动切换网络 ,0表示不能,1表示能 | imei | string| 是| 4G芯片的imei号码 | | mid | number| 否| mid | | iccid | string| 否| Sim卡片的iccid号码| | deviceDSN | string| 是| 云小微的dsn号码 | | alarm | json数组| 是|开关机的闹钟设置,如果为[] 则使用默认的设置。 | ```json { "DstDeviceName": "mobile_uuid", "SrcDeviceName": "device_uuid", "code": 200, "type": "get_dev_info", "other": { "Guid": "AIrSMArT_210052088989", "userid": "1756", "ProdModel": "MW-Mate X(4G_WIFI)", "sim_iccid": "", "esim_iccid": "", "SoftVer": "1.7.5", "Firmware": "RTOS", "Power": 80, "lowBatteryNtf": 0, "Volume": 8, "Mute": 0, "pauseShutdown": 0, "PlayState": 1, "PlayMode": 0, "devName": "猫王音响·Mate_X", "deviceId": "", "deviceSecret": "", "is_tts_enable": 1, "SignalQuality": 100, "CardIndex": 0, "CardSum": 2, "NetModel": 2, "is_netmode_auto": 0, "Imei": "861210052088989", "mid": "", "deviceDSN": "977171045859594240", "alarm": [{ "alarm_id": "0", "alarm_name": "", "current_timestamp": "", "on_off_timestamp": "", "operation": "", "song_uri": "", "weekly_repeat": "", "enable": "", "action": "", "week_actives": [0, 0, 0, 0, 0, 0, 0] }, { "alarm_id": "1", "alarm_name": "", "current_timestamp": "", "on_off_timestamp": "", "operation": "", "song_uri": "", "weekly_repeat": "", "enable": "", "action": "", "week_actives": [0, 0, 0, 0, 0, 0, 0] }] } } ``` #### 2.3.3 设备发送设备名称给手机 get_dev_name 场景描述: 手机端发送控制类型 get_dev_name,设备回复设备名称给手机端 ```json { "DstDeviceName": "mobile_uuid", "SrcDeviceName": "device_uuid", "type": " get_dev_name", "other": { "devName": "猫王· 旅行者1号", } } ``` #### 2.3.4 设备上报播放状态 play_state 场景描述: 当设备播放状态发生改变,主动发送给播放状态给手机端 ```json { "DstDeviceName": "mobile_uuid", "SrcDeviceName": "device_uuid", "type": "play_state", "other": { "PlayState": 1 //播放状态:1播放状态,2暂停状态,3停止状态,4缓冲状态。 } } ``` #### 2.3.5 设备上报音量 volume_get 场景描述: 1. 手机端发送控制类型 volume_get,设备端发送音量数据给手机端。 2. 设备端按键调整音量,设备端发送音量数据给手机端。 ```json { "DstDeviceName": "mobile_uuid", "SrcDeviceName": "device_uuid", "type": "volume_get", "code": 200, "other": { "volume": 99 //设备音量 } } ``` #### 2.3.6 设备上报网络类型 get_net_type 场景描述: 设备切换网络状态,设备端发送网络类型给手机端 | 参数名称 | 格式 |是否必填|说明| | --- | --- |--- |--- | | networkType | number| 是|Mobile:0,wifi :1| ```json { "DstDeviceName": "mobile_uuid", "SrcDeviceName": "device_uuid", "type": "get_net_type", "other": { "networkType": 0//Mobile:0,wifi :1 } } ``` #### 2.3.7 设备向app发送开始DM云小薇授权 start_dm_auth 场景描述: 1.设备收到app发送给设备的start_dm_auth命令, 设备已经授权过了,回复app 发送code = 0; 没有通过云小薇授权过回复 code = 1,并且把dsn和authReqInfo发送给app; 2.设备没有授权,或者token过期等等主动向app发送开始授权命令 | 参数名称 | 格式 |是否必填|说明| | --- | --- |--- |--- | | code | number| 是|已经授权过了:0,没有通过云小薇授权 :1| | dsn | String| 否|提供给云小薇的设备唯一标识,code为1,必填,其他不用填| | authReqInfo | String| 否|由智能设备根据规则生成,生成规则见[authReqInfo说明](https://dingdang.qq.com/doc/page/365),code为1,必填,其他不用填| ```json { "DstDeviceName": "mobile_uuid", "SrcDeviceName": "device_uuid", "type": "start_dm_auth", "other": { "code":1, "dsn": "xx", "authReqInfo": "xxxxxx" } } ``` #### 2.3.8 设备向app发送云小薇的Authorization(AccessToken) get_dm_auth 场景描述: 1.设备收到get_dm_auth命令后,把Authorization发送给App; 2.设备授权成功(通过clientid授权)后,或者刷新token(刷票)之后把Authorization发送给App; | 参数名称 | 格式 |是否必填|说明| | --- | --- |--- |--- | | dsn | String| 是|提供给云小薇的设备唯一标识| | authorization | String| 是|授权或者刷票得到的AccessToken| ```json { "DstDeviceName": "mobile_uuid", "SrcDeviceName": "device_uuid", "type": "get_dm_auth", "other": { "dsn": "xx", "authorization": "xxxxxx" } } ```