ex

Fork of mbed-os-example-mbed5-blinky by mbed-os-examples

Revision:
44:c1d8923072ba
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/dumi_doc-master/doc/smart_home_skill_api_reference.md	Tue Jul 18 16:27:22 2017 +0800
@@ -0,0 +1,2051 @@
+# Smart Home Skill API Reference
+
+<!-- MarkdownTOC -->
+
+- [简介](#%E7%AE%80%E4%BB%8B)
+- [认证](#%E8%AE%A4%E8%AF%81)
+- [Skill指令](#skill%E6%8C%87%E4%BB%A4)
+  - [Header](#header)
+  - [Payload](#payload)
+  - [发现设备\(Discovery Message\)](#%E5%8F%91%E7%8E%B0%E8%AE%BE%E5%A4%87discovery-message)
+    - [DiscoverAppliancesRequest](#discoverappliancesrequest)
+    - [DiscoverAppliancesResponse](#discoverappliancesresponse)
+  - [控制设备\(Control Message\)](#%E6%8E%A7%E5%88%B6%E8%AE%BE%E5%A4%87control-message)
+    - [打开关闭设备\(On/Off Messages\)](#%E6%89%93%E5%BC%80%E5%85%B3%E9%97%AD%E8%AE%BE%E5%A4%87onoff-messages)
+    - [可控灯光设备\(Tunable Lighting Control Messages\)](#%E5%8F%AF%E6%8E%A7%E7%81%AF%E5%85%89%E8%AE%BE%E5%A4%87tunable-lighting-control-messages)
+    - [可控温度设备\(Temperature Control Messages\)](#%E5%8F%AF%E6%8E%A7%E6%B8%A9%E5%BA%A6%E8%AE%BE%E5%A4%87temperature-control-messages)
+    - [可控风速设备\(Fan Speed Control Messages\)](#%E5%8F%AF%E6%8E%A7%E9%A3%8E%E9%80%9F%E8%AE%BE%E5%A4%87fan-speed-control-messages)
+  - [查询状态\(Query Message\)](#%E6%9F%A5%E8%AF%A2%E7%8A%B6%E6%80%81query-message)
+    - [查询空气质量](#%E6%9F%A5%E8%AF%A2%E7%A9%BA%E6%B0%94%E8%B4%A8%E9%87%8F)
+  - [错误消息\(Error Message\)](#%E9%94%99%E8%AF%AF%E6%B6%88%E6%81%AFerror-message)
+    - [用户故障\(User Faults\)](#%E7%94%A8%E6%88%B7%E6%95%85%E9%9A%9Cuser-faults)
+    - [Bot故障\(Bot Faults\)](#bot%E6%95%85%E9%9A%9Cbot-faults)
+    - [其他错误\(Other Faults\)](#%E5%85%B6%E4%BB%96%E9%94%99%E8%AF%AFother-faults)
+
+<!-- /MarkdownTOC -->
+
+## 简介
+
+该协议实现度秘终端互联互通的目的,达到通过使用支持DuerOS能力的设备,控制灯泡等被控设备的效果。
+
+## 认证
+
+Smart Home Skill API 遵循 OAuth2.0 规范。
+从 DuerOS 发送到 厂商Bot 的每个请求都包含 OAuth 的 access token。
+
+## Skill指令
+
+所有的指令(Directives),不论是DuerOS发送给Bot还是Bot返回给DuerOS,都是同一个结构,包含以下两个顶层字段:
+* Header
+* Payload
+
+### Header
+
+Header包含 命名空间、指令名称、目标版本和唯一消息标识符。以下是典型的消息Header的JSON示例:
+```
+{
+    "header": {
+        "messageId": "6d6d6e14-8aee-473e-8c24-0d31ff9c17a2",
+        "name": "DiscoverAppliancesRequest",
+        "namespace": "DuerOS.ConnectedHome.Discovery",
+        "payloadVersion": "1"
+    }
+}
+```
+
+Header必须包含以下属性:
+
+|Property | Description |
+|---|---|
+|messageId | 单个请求或响应的唯一标识符。 这用于跟踪目的,Bot应该记录此信息,尽管它不应用于支持业务逻辑。 来自Bot的每条消息都必须填充此字段。 任何字符串数字字符和短于128个字符的字符串都是有效的,但是推荐使用随机数生成的UUID版本4 UUID。 |
+|name | 指令的名称,如 DiscoverAppliancesRequest 和 DiscoverAppliancesResponse |
+|namespace | 指定消息payload的类别。 目前的类别有: DuerOS.ConnectedHome.Discovery、DuerOS.ConnectedHome.Control、DuerOS.ConnectedHome.Query |
+|payloadVersion | 标识payload的版本号 |
+
+### Payload
+
+Payload的内容取决于在Header中的name值。
+以下部分描述不同类型的指令,及其预期的payload描述和示例。
+
+|Task | Namespace | Message Names |
+|---|---|---|
+|Discover connected devices | DuerOS.ConnectedHome.Discovery | DiscoverAppliancesRequest、DiscoverAppliancesResponse|
+|Control connected devices; turn things off and on and change settings | DuerOS.ConnectedHome.Control |TurnOnRequest、TimingTurnOnRequest、TurnOffRequest、IncrementBrightnessRequest、DecrementBrightnessRequest、IncrementTemperatureRequest、DecrementTemperatureRequest、SetTemperatureRequest、IncrementFanSpeedRequest、DecrementFanSpeedRequest、SetModeRequest、TimingSetModeRequest |
+|Query connected devices for their current state | DuerOS.ConnectedHome.Query | GetAirPM25Request |
+
+### 发现设备(Discovery Message)
+
+该消息类型用于发现可用的设备,确定其使用场景和功能。
+
+#### DiscoverAppliancesRequest
+
+**例子:**
+
+“小度小度,查找我的设备”
+
+**目的:**
+
+发现与最终用户的设备云帐户相关的设备和场景。DiscoverAppliancesRequest 从 DuerOS 发送到 Bot。如果没有设备可以发现,或者您的设备云是否遇到错误,则 Bot 应返回一个空的 DiscoverAppliancesResponse,而不是错误消息。
+
+##### Header
+
+|Property | Value |
+|---|---|
+|name | DiscoverAppliancesRequest |
+|namespace | DuerOS.ConnectedHome.Discovery |
+
+##### Payload
+
+|Property | Description | Required |
+|---|---|---|
+|accessToken | 与用户设备云帐号相关的access token | Yes |
+
+DiscoverAppliancesRequest例子:
+```
+{
+    "header": {
+        "messageId": "6d6d6e14-8aee-473e-8c24-0d31ff9c17a2",
+        "name": "DiscoverAppliancesRequest",
+        "namespace": "DuerOS.ConnectedHome.Discovery",
+        "payloadVersion": "1"
+    },
+    "payload": {
+        "accessToken": "*OAuth Token here*"
+    }
+}
+```
+
+#### DiscoverAppliancesResponse
+
+**目的:**
+
+返回与最终用户的设备云帐户相关的所有设备的能力。是Bot对 DiscoverAppliancesRequest 的预期响应。如果没有发现设备或者您的设备云遇到错误,请返回一个空的 discoveryAppliances 数组。 DiscoverAppliancesResponse 指令包含与您的能力和数据相关联的设备列表,如:
+* 用户标识的名称和描述
+* 设备类型,如light 和 scene
+* 每个设备或场景支持的操作
+
+##### Header
+
+|Property | Value |
+|---|---|
+|name | DiscoverAppliancesResponse |
+|namespace | DuerOS.ConnectedHome.Discovery |
+
+##### Payload
+
+|Property | Description | Required |
+|---|---|---|
+|discoveredAppliances | discoveredAppliance 对象的数组,该对象包含可发现设备或场景,与用户设备帐户相关联的。 如果没有与用户帐户关联的设备或场景,此属性应包含一个空数组。 如果发生错误,该属性可以为null。 阵列中允许的最大项目数量为300。discoveryAppliance对象的每个属性如下所示 | Yes |
+|discoveredAppliance.applianceTypes | 包含字符串的数组,其中字符串,表示所连接设备的类别,如LIGHT;或者表示场景。有关支持的字符串的完整列表,请参阅设备类别。任何其他字符串将被拒绝。 | Yes |
+|discoveredAppliance.applianceId | 设备标识符。标识符在用户拥有的所有设备上必须是唯一的。此外,标识符需要在同一设备的多个发现请求之间保持一致。标识符可以包含任何字母或数字和以下特殊字符:_ - =#; :? @&。标识符不能超过256个字符。| Yes |
+|discoveredAppliance.manufacturerName | 设备制造商的名称。此值不能超过128个字符。| Yes |
+|discoveredAppliance.modelName | 设备型号名称。此值不能超过128个字符。 | Yes |
+|discoveredAppliance.version | 供应商提供的设备版本。此值不能超过128个字符。 | Yes |
+|discoveredAppliance.friendlyName | 用户用来识别设备的名称。 此值不能超过128个字符,不应包含特殊字符或标点符号。| Yes |
+|discoveredAppliance.friendlyDescription | 设备的可读描述。 此值不能超过128个字符。 描述应包含设备连接方式的描述。 例如,“通过Wink连接的WiFi温控器”。| Yes |
+|discoveredAppliance.isReachable | true表示设备当前可达; 否则,false。| Yes |
+|discoveredAppliance.actions | 设备可支持的action的数组。合法的action包括: <br>turnOn<br/> <br>timingTurnOn<br/> <br>turnOff<br/> <br>incrementBrightness<br/> <br>decrementBrightness<br/> <br>incrementTemperature<br/> <br>decrementTemperature<br/> <br>setTemperature<br/> <br>incrementFanSpeed<br/> <br>decrementFanSpeed<br/> <br>setMode<br/> <br>timingSetMode<br/> <br>getAirPM25<br/>| Yes |
+|discoveredAppliance.additionalApplianceDetails | 提供给Bot使用的设备或场景相关的附加信息的键值对。该属性的内容不能超过5000字节。而且DuerOS也不了解或使用这些数据。 | Yes,但可以为空 |
+
+设备 和 场景 类型:
+
+|Value | Description | Notes |
+|---|---|---|
+|WASHING_MACHINE| 洗衣机等设备 ||
+|AIR_CONDITION| 空调等设备 ||
+|RANGE_HOOD | 抽油烟机等设备 | |
+|LIGHT| 代表光源的设备 ||
+|CURTAIN | 窗帘等设备 | |
+|ACTIVITY_TRIGGER| 描述设置为特定状态的设备的组合,状态必须以特定顺序变更。例如,“观看优酷视频”场景可能需要 (1)打开电视机; (2)打开HDMI1。| |
+|SCENE_TRIGGER| 描述设置为特定状态的设备的组合,状态不必以特定顺序变更。 例如睡眠模式可能包括关闭灯光和拉上窗帘,但是顺序不重要。| |
+
+注:在 场景 类型的appliance下,需对 friendlyDescription 和 friendlyName 的命名有一定规范:
+
+* friendlyDescription 的值内容必须包含“场景”及场景提供的设备厂商。如 “来自*厂商*的场景”. 此值不能超过128个字符。
+* friendlyName 是用户用来与您的场景交互并且必须存在的名称。目的是让用户以自然而轻松的方式控制场景。friendlyName应遵循以下准则: 
+    * 首选项,仅包括场景名称。这为用户控制场景提供了最简单和最自然的方式
+    * 可选,包括房间名称,如果在不同的房间提供类似的场景
+    * 可选,包括房间“场景”
+    * 可选,包括场景名称和房间名称之间的介词,如“在”
+    * 不能包含特殊字符活标点符号
+    * 不能超过128个字符
+
+DiscoverAppliancesResponse 例子:
+
+```
+{
+ "header":{
+    "messageId":"ff746d98-ab02-4c9e-9d0d-b44711658414",
+    "name":"DiscoverAppliancesResponse",
+    "namespace":"DuerOS.ConnectedHome.Discovery",
+    "payloadVersion": "1"
+ },
+ "payload":{
+    "discoveredAppliances":[
+       {
+          "actions":[
+            "turnOn",
+            "turnOff",
+            "incrementBrightness",
+            "decrementBrightness"
+          ],
+          "applianceTypes":[
+             "LIGHT"
+          ],
+          "additionalApplianceDetails":{
+             "extraDetail1":"optionalDetailForSkillAdapterToReferenceThisDevice",
+             "extraDetail2":"There can be multiple entries",
+             "extraDetail3":"but they should only be used for reference purposes.",
+             "extraDetail4":"This is not a suitable place to maintain current device state"
+          },
+          "applianceId":"uniqueLightDeviceId",
+          "friendlyDescription":"展现给用户的详细介绍",
+          "friendlyName":"卧室",
+          "isReachable":true,
+          "manufacturerName":"设备制造商的名称",
+          "modelName":"fancyLight",
+          "version":"your software version number here."
+       },
+       {
+          "actions":[
+             "turnOn",
+             "turnOff"
+          ],
+          "applianceTypes":[
+             "CURTAIN"
+          ],
+          "additionalApplianceDetails":{
+             "extraDetail1":"optionalDetailForSkillAdapterToReferenceThisDevice",
+             "extraDetail2":"There can be multiple entries",
+             "extraDetail3":"but they should only be used for reference purposes.",
+             "extraDetail4":"This is not a suitable place to maintain current device state"
+          },
+          "applianceId":"uniqueSwitchDeviceId",
+          "friendlyDescription":"展现给用户的详细介绍",
+          "friendlyName":"卧室的窗帘",
+          "isReachable":true,
+          "manufacturerName":"设备制造商的名称",
+          "modelName":"fancyCurtain",
+          "version":"your software version number here."
+       },
+      {
+        "actions": [
+          "turnOn",
+          "turnOff"
+        ],
+        "applianceTypes":[
+          "SCENE_TRIGGER"
+        ],
+        "additionalApplianceDetails": {
+          "extraDetail1": "detail about the scene",
+          "extraDetail2": "another detail about scene",
+          "extraDetail3": "only be used for reference purposes."
+        },
+        "applianceId": "uniqueDeviceId",
+        "friendlyDescription": "来自设备商的场景",
+        "friendlyName": "回家模式",
+        "isReachable": true,
+        "manufacturerName": "yourManufacturerName",
+        "modelName": "提供场景的设备型号",
+        "version": "your software version number here."
+      }
+    ]
+ }
+}
+```
+
+### 控制设备(Control Message)
+
+#### 打开关闭设备(On/Off Messages)
+
+消息类型打开或关闭目标设备。这些消息通常由几种不同类型的设备使用。
+* TurnOnRequest
+* TurnOnConfirmation
+* TimingTurnOnRequest
+* TimingTurnOnConfirmation
+* TurnOffRequest
+* TurnOffConfirmation
+
+##### TurnOnRequest
+
+**例子:**
+“小度小度,打开 *设备名*”
+
+**目的:**
+DuerOS发送给Bot的打开设备的请求
+
+###### Header
+
+|Property|Value|
+|---|---|
+|name|TurnOnRequest|
+|namespace|DuerOS.ConnectedHome.Control|
+
+###### Payload
+
+|Property|Description|Required|
+|---|---|---|
+| accessToken | 从设备云端取到的access token | Yes |
+| appliance object | 表示具体操作指令 | Yes |
+| appliance.applianceId | 设备标识符。标识符在用户拥有的所有设备上必须是唯一的。此外,标识符需要在同一设备的多个发现请求之间保持一致。标识符可以包含任何字母或数字和以下特殊字符:_ - =#; :? @&。标识符不能超过256个字符。 | Yes |
+| appliance.additionalApplianceDetails | 提供给Bot使用的设备或场景相关的附加信息的键值对。该属性的内容不能超过5000字节。而且DuerOS也不了解或使用这些数据。 | Yes,但可以为空 |
+
+TurnOnRequest 例子:
+```
+{
+    "header": {
+        "messageId": "01ebf625-0b89-4c4d-b3aa-32340e894688",
+        "name": "TurnOnRequest",
+        "namespace": "DuerOS.ConnectedHome.Control",
+        "payloadVersion": "1"
+    },
+    "payload": {
+        "accessToken": "[OAuth token here]",
+        "appliance": {
+            "additionalApplianceDetails": {},
+            "applianceId": "[Device ID for Ceiling Fan]"
+        }
+    }
+}
+```
+
+##### TurnOnConfirmation
+
+**度秘返回的结果例子:**
+“*设备name*已打开”
+
+**目的:**
+表示设备已经被成功打开。表示Bot返回给DuerOS的打开成功的结果
+
+###### Header
+
+|Property|Value|
+|---|---|
+|name| TurnOnConfirmation |
+|namespace|DuerOS.ConnectedHome.Control|
+
+###### Payload
+
+|Property|Description|Required|
+|---|---|---|
+| N/A | N/A | N/A |
+
+TurnOnConfirmation 例子:
+```
+{
+    "header": {
+        "messageId": "26fa11a8-accb-4f66-a272-8b1ff7abd722",
+        "name": "TurnOnConfirmation",
+        "namespace": "DuerOS.ConnectedHome.Control",
+        "payloadVersion": "1"
+    },
+    "payload": {}
+}
+```
+
+##### TimingTurnOnRequest
+
+**例子:**
+“小度小度,定时1分钟后打开 *设备名*”
+
+**目的:**
+DuerOS发送给Bot的打开设备的请求
+
+###### Header
+
+|Property|Value|
+|---|---|
+|name|TimingTurnOnRequest|
+|namespace|DuerOS.ConnectedHome.Control|
+
+###### Payload
+
+|Property|Description|Required|
+|---|---|---|
+| accessToken | 从设备云端取到的access token | Yes |
+| appliance object | 表示具体操作指令 | Yes |
+| appliance.applianceId | 设备标识符。标识符在用户拥有的所有设备上必须是唯一的。此外,标识符需要在同一设备的多个发现请求之间保持一致。标识符可以包含任何字母或数字和以下特殊字符:_ - =#; :? @&。标识符不能超过256个字符。 | Yes |
+| appliance.additionalApplianceDetails | 提供给Bot使用的设备或场景相关的附加信息的键值对。该属性的内容不能超过5000字节。而且DuerOS也不了解或使用这些数据。 | Yes,但可以为空 |
+| timestamp | 表示设备定时设置的量的对象。包含一个属性值,它指定一个数字,代表时间戳。 | No |
+
+TimingTurnOnRequest 例子:
+```
+{
+    "header": {
+        "messageId": "01ebf625-0b89-4c4d-b3aa-32340e894688",
+        "name": "TimingTurnOnRequest",
+        "namespace": "DuerOS.ConnectedHome.Control",
+        "payloadVersion": "1"
+    },
+    "payload": {
+        "timestamp": {
+            "value": 1496741861
+        },
+        "accessToken": "[OAuth token here]",
+        "appliance": {
+            "additionalApplianceDetails": {},
+            "applianceId": "[Device ID for Ceiling Fan]"
+        }
+    }
+}
+```
+
+##### TimingTurnOnConfirmation
+
+**度秘返回的结果例子:**
+“*设备name*已定时成功”
+
+**目的:**
+表示设备已经被成功定时。表示Bot返回给DuerOS的打开成功的结果
+
+###### Header
+
+|Property|Value|
+|---|---|
+|name| TimingTurnOnConfirmation |
+|namespace|DuerOS.ConnectedHome.Control|
+
+###### Payload
+
+|Property|Description|Required|
+|---|---|---|
+| N/A | N/A | N/A |
+
+TimingTurnOnConfirmation 例子:
+```
+{
+    "header": {
+        "messageId": "26fa11a8-accb-4f66-a272-8b1ff7abd722",
+        "name": "TimingTurnOnConfirmation",
+        "namespace": "DuerOS.ConnectedHome.Control",
+        "payloadVersion": "1"
+    },
+    "payload": {}
+}
+```
+
+##### TurnOffRequest
+
+**例子:**
+“小度小度,关闭 *设备名*”
+
+**目的:**
+DuerOS发送给Bot的关闭设备的请求
+
+###### Header
+
+|Property|Value|
+|---|---|
+|name|TurnOffRequest|
+|namespace|DuerOS.ConnectedHome.Control|
+
+###### Payload
+
+|Property|Description|Required|
+|---|---|---|
+| accessToken | 从设备云端取到的access token | Yes |
+| appliance object | 表示具体操作指令 | Yes |
+| appliance.applianceId | 设备标识符。标识符在用户拥有的所有设备上必须是唯一的。此外,标识符需要在同一设备的多个发现请求之间保持一致。标识符可以包含任何字母或数字和以下特殊字符:_ - =#; :? @&。标识符不能超过256个字符。 | Yes |
+| appliance.additionalApplianceDetails | 提供给Bot使用的设备或场景相关的附加信息的键值对。该属性的内容不能超过5000字节。而且DuerOS也不了解或使用这些数据。 | Yes,但可以为空 |
+
+TurnOffRequest 例子:
+```
+{
+    "header": {
+        "messageId": "01ebf625-0b89-4c4d-b3aa-32340e894688",
+        "name": "TurnOffRequest",
+        "namespace": "DuerOS.ConnectedHome.Control",
+        "payloadVersion": "1"
+    },
+    "payload": {
+        "accessToken": "[OAuth token here]",
+        "appliance": {
+            "additionalApplianceDetails": {},
+            "applianceId": "[Device ID for Ceiling Fan]",
+        }
+    }
+}
+```
+
+##### TurnOffConfirmation
+
+**度秘返回的结果例子:**
+“*设备name*已关闭”
+
+**目的:**
+表示设备已经被成功关闭。表示Bot返回给DuerOS的关闭成功的结果
+
+###### Header
+
+|Property|Value|
+|---|---|
+|name| TurnOffConfirmation |
+|namespace|DuerOS.ConnectedHome.Control|
+
+###### Payload
+
+|Property|Description|Required|
+|---|---|---|
+| N/A | N/A | N/A |
+
+TurnOffConfirmation 例子:
+```
+{
+    "header": {
+        "messageId": "26fa11a8-accb-4f66-a272-8b1ff7abd722",
+        "name": "TurnOffConfirmation",
+        "namespace": "DuerOS.ConnectedHome.Control",
+        "payloadVersion": "1"
+    },
+    "payload": {}
+}
+```
+
+#### 可控灯光设备(Tunable Lighting Control Messages)
+
+##### IncrementBrightnessRequest
+
+**例子:**
+“小度小度,把卧室的灯调亮一点”
+
+**目的:**
+DuerOS发送给Bot的调亮灯光的请求
+
+###### Header
+
+|Property|Value|
+|---|---|
+|name|IncrementBrightnessRequest|
+|namespace|DuerOS.ConnectedHome.Control|
+
+###### Payload
+
+|Property|Description|Required|
+|---|---|---|
+| accessToken | 从设备云端取到的access token | Yes |
+| appliance object | 表示具体操作指令 | Yes |
+| appliance.applianceId | 设备标识符。标识符在用户拥有的所有设备上必须是唯一的。此外,标识符需要在同一设备的多个发现请求之间保持一致。标识符可以包含任何字母或数字和以下特殊字符:_ - =#; :? @&。标识符不能超过256个字符。 | Yes |
+| appliance.additionalApplianceDetails | 提供给Bot使用的设备或场景相关的附加信息的键值对。该属性的内容不能超过5000字节。而且DuerOS也不了解或使用这些数据。 | Yes,但可以为空 |
+| deltaBrightness | 表示设备的亮度提高的量的对象。包含一个属性值,它指定一个double类型的数字,表示设备亮度调整的值,其有效范围为0.0000至1.0000。 | Yes |
+
+TurnOnRequest 例子:
+```
+{
+    "header": {
+        "messageId": "01ebf625-0b89-4c4d-b3aa-32340e894688",
+        "name": "IncrementBrightnessRequest",
+        "namespace": "DuerOS.ConnectedHome.Control",
+        "payloadVersion": "1"
+    },
+    "payload": {
+        "deltaBrightness": {
+            "value": 0.500
+        },
+        "accessToken": "[OAuth token here]",
+        "appliance": {
+            "additionalApplianceDetails": {},
+            "applianceId": "[Device ID for Ceiling Fan]",
+        }
+    }
+}
+```
+
+##### IncrementBrightnessConfirmation
+
+**度秘返回的结果例子:**
+“*设备name*已设置成功”
+
+**目的:**
+表示设备亮度调高成功。表示Bot返回给DuerOS的成功的结果
+
+###### Header
+
+|Property|Value|
+|---|---|
+|name| IncrementBrightnessConfirmation |
+|namespace|DuerOS.ConnectedHome.Control|
+
+###### Payload
+
+|Property|Description|Required|
+|---|---|---|
+| brightness | double类型,表示亮度增加后的值。 | Yes |
+| previousState object | 表示亮度变化之前的对象 | Yes |
+| previousState.brightness | double类型,表示亮度增加前的值。 | Yes |
+
+TurnOnConfirmation 例子:
+```
+{
+    "header": {
+        "messageId": "780013dd-99d0-4c69-9e35-db0457f9f2a7",
+        "name": "IncrementBrightnessConfirmation",
+        "namespace": "DuerOS.ConnectedHome.Control",
+        "payloadVersion": "1"
+    },
+    "payload": {
+        "previousState": {
+            "brightness": {
+                "value": 0.5
+            }
+        },
+        "brightness": {
+            "value": 1.0
+        }
+    }
+}
+```
+
+##### DecrementBrightnessRequest
+
+**例子:**
+“小度小度,把卧室的灯调暗一点”
+
+**目的:**
+DuerOS发送给Bot的调低灯光亮度的请求
+
+###### Header
+
+|Property|Value|
+|---|---|
+|name|DecrementBrightnessRequest|
+|namespace|DuerOS.ConnectedHome.Control|
+
+###### Payload
+
+|Property|Description|Required|
+|---|---|---|
+| accessToken | 从设备云端取到的access token | Yes |
+| appliance object | 表示具体操作指令 | Yes |
+| appliance.applianceId | 设备标识符。标识符在用户拥有的所有设备上必须是唯一的。此外,标识符需要在同一设备的多个发现请求之间保持一致。标识符可以包含任何字母或数字和以下特殊字符:_ - =#; :? @&。标识符不能超过256个字符。 | Yes |
+| appliance.additionalApplianceDetails | 提供给Bot使用的设备或场景相关的附加信息的键值对。该属性的内容不能超过5000字节。而且DuerOS也不了解或使用这些数据。 | Yes,但可以为空 |
+| deltaBrightness | 表示设备的亮度提高的量的对象。包含一个属性值,它指定一个double类型的数字,表示设备亮度调整的值,其有效范围为0.0000至1.0000。 | Yes |
+
+DecrementBrightnessRequest 例子:
+```
+{
+    "header": {
+        "messageId": "01ebf625-0b89-4c4d-b3aa-32340e894688",
+        "name": "DecrementBrightnessRequest",
+        "namespace": "DuerOS.ConnectedHome.Control",
+        "payloadVersion": "1"
+    },
+    "payload": {
+        "deltaBrightness": {
+            "value": 0.500
+        },
+        "accessToken": "[OAuth token here]",
+        "appliance": {
+            "additionalApplianceDetails": {},
+            "applianceId": "[Device ID for Ceiling Fan]",
+        }
+    }
+}
+```
+
+##### DecrementBrightnessConfirmation
+
+**度秘返回的结果例子:**
+“*设备name*已设置成功”
+
+**目的:**
+表示设备亮度调低成功。表示Bot返回给DuerOS的成功的结果
+
+###### Header
+
+|Property|Value|
+|---|---|
+|name| DecrementBrightnessConfirmation |
+|namespace|DuerOS.ConnectedHome.Control|
+
+###### Payload
+
+|Property|Description|Required|
+|---|---|---|
+| brightness | double类型,表示亮度增加后的值。 | Yes |
+| previousState object | 表示亮度变化之前的对象 | Yes |
+| previousState.brightness | double类型,表示亮度增加前的值。 | Yes |
+
+DecrementBrightnessConfirmation 例子:
+```
+{
+    "header": {
+        "messageId": "780013dd-99d0-4c69-9e35-db0457f9f2a7",
+        "name": "DecrementBrightnessConfirmation",
+        "namespace": "DuerOS.ConnectedHome.Control",
+        "payloadVersion": "1"
+    },
+    "payload": {
+        "previousState": {
+            "brightness": {
+                "value": 1.0
+            }
+        },
+        "brightness": {
+            "value": 0.5
+        }
+    }
+}
+```
+
+#### 可控温度设备(Temperature Control Messages)
+
+##### IncrementTemperatureRequest
+
+**例子:**
+“小度小度,把卧室的温度调高一点”
+
+**目的:**
+DuerOS发送给Bot的调高温度的请求
+
+###### Header
+
+|Property|Value|
+|---|---|
+|name|IncrementTemperatureRequest|
+|namespace|DuerOS.ConnectedHome.Control|
+
+###### Payload
+
+|Property|Description|Required|
+|---|---|---|
+| accessToken | 从设备云端取到的access token | Yes |
+| appliance object | 表示具体操作指令 | Yes |
+| appliance.applianceId | 设备标识符。标识符在用户拥有的所有设备上必须是唯一的。此外,标识符需要在同一设备的多个发现请求之间保持一致。标识符可以包含任何字母或数字和以下特殊字符:_ - =#; :? @&。标识符不能超过256个字符。 | Yes |
+| appliance.additionalApplianceDetails | 提供给Bot使用的设备或场景相关的附加信息的键值对。该属性的内容不能超过5000字节。而且DuerOS也不了解或使用这些数据。 | Yes,但可以为空 |
+| deltaTemperature | 表示设备的温度变化的量的对象。包含一个属性值,它指定一个数字。 | Yes |
+
+IncrementTemperatureRequest 例子:
+```
+{
+    "header": {
+        "messageId": "01ebf625-0b89-4c4d-b3aa-32340e894688",
+        "name": "IncrementTemperatureRequest",
+        "namespace": "DuerOS.ConnectedHome.Control",
+        "payloadVersion": "1"
+    },
+    "payload": {
+        "deltaTemperature": {
+            "value": 2.0
+        },
+        "accessToken": "[OAuth token here]",
+        "appliance": {
+            "additionalApplianceDetails": {},
+            "applianceId": "[Device ID for Ceiling Fan]",
+        }
+    }
+}
+```
+
+##### IncrementTemperatureConfirmation
+
+**度秘返回的结果例子:**
+“*设备name*已设置成功”
+
+**目的:**
+表示设备温度调高成功。表示Bot返回给DuerOS的成功的结果
+
+###### Header
+
+|Property|Value|
+|---|---|
+|name| IncrementTemperatureConfirmation |
+|namespace|DuerOS.ConnectedHome.Control|
+
+###### Payload
+
+|Property|Description|Required|
+|---|---|---|
+| mode | 表示设置之后的设备模式。 | Yes |
+| temperature | double类型,表示设置之后的值。 | Yes |
+| previousState object | 表示亮度变化之前的对象 | Yes |
+| previousState.mode | 表示设置之前的设备模式。 | Yes |
+| previousState.temperature | double类型,表示设置之前的值。 | Yes |
+
+IncrementTemperatureConfirmation 例子:
+```
+{
+    "header": {
+        "messageId": "780013dd-99d0-4c69-9e35-db0457f9f2a7",
+        "name": "IncrementTemperatureConfirmation",
+        "namespace": "DuerOS.ConnectedHome.Control",
+        "payloadVersion": "1"
+    },
+    "payload": {
+        "previousState": {
+            "mode": {
+                "value": "AUTO"
+            },
+            "temperature": {
+                "value": 21.0
+            }
+        },
+        "temperature": {
+            "value": 25.0
+        },
+        "mode": {
+            "value": "AUTO"
+        }
+    }
+}
+```
+
+##### DecrementTemperatureRequest
+
+**例子:**
+“小度小度,把卧室的温度调低一点”
+
+**目的:**
+DuerOS发送给Bot的调低温度的请求
+
+###### Header
+
+|Property|Value|
+|---|---|
+|name|DecrementTemperatureRequest|
+|namespace|DuerOS.ConnectedHome.Control|
+
+###### Payload
+
+|Property|Description|Required|
+|---|---|---|
+| accessToken | 从设备云端取到的access token | Yes |
+| appliance object | 表示具体操作指令 | Yes |
+| appliance.applianceId | 设备标识符。标识符在用户拥有的所有设备上必须是唯一的。此外,标识符需要在同一设备的多个发现请求之间保持一致。标识符可以包含任何字母或数字和以下特殊字符:_ - =#; :? @&。标识符不能超过256个字符。 | Yes |
+| appliance.additionalApplianceDetails | 提供给Bot使用的设备或场景相关的附加信息的键值对。该属性的内容不能超过5000字节。而且DuerOS也不了解或使用这些数据。 | Yes,但可以为空 |
+| deltaTemperature | 表示设备的温度变化的量的对象。包含一个属性值,它指定一个数字。 | Yes |
+
+DecrementTemperatureRequest 例子:
+```
+{
+    "header": {
+        "messageId": "01ebf625-0b89-4c4d-b3aa-32340e894688",
+        "name": "DecrementTemperatureRequest",
+        "namespace": "DuerOS.ConnectedHome.Control",
+        "payloadVersion": "1"
+    },
+    "payload": {
+        "deltaTemperature": {
+            "value": 2.0
+        },
+        "accessToken": "[OAuth token here]",
+        "appliance": {
+            "additionalApplianceDetails": {},
+            "applianceId": "[Device ID for Ceiling Fan]",
+        }
+    }
+}
+```
+
+##### DecrementTemperatureConfirmation
+
+**度秘返回的结果例子:**
+“*设备name*已设置成功”
+
+**目的:**
+表示设备温度调低成功。表示Bot返回给DuerOS的成功的结果
+
+###### Header
+
+|Property|Value|
+|---|---|
+|name| DecrementTemperatureConfirmation |
+|namespace|DuerOS.ConnectedHome.Control|
+
+###### Payload
+
+|Property|Description|Required|
+|---|---|---|
+| mode | 表示设置之后的设备模式。 | Yes |
+| temperature | double类型,表示设置之后的值。 | Yes |
+| previousState object | 表示亮度变化之前的对象 | Yes |
+| previousState.mode | 表示设置之前的设备模式。 | Yes |
+| previousState.temperature | double类型,表示设置之前的值。 | Yes |
+
+DecrementTemperatureConfirmation 例子:
+```
+{
+    "header": {
+        "messageId": "780013dd-99d0-4c69-9e35-db0457f9f2a7",
+        "name": "DecrementTemperatureConfirmation",
+        "namespace": "DuerOS.ConnectedHome.Control",
+        "payloadVersion": "1"
+    },
+    "payload": {
+        "previousState": {
+            "mode": {
+                "value": "AUTO"
+            },
+            "temperature": {
+                "value": 25.0
+            }
+        },
+        "temperature": {
+            "value": 23.0
+        },
+        "mode": {
+            "value": "AUTO"
+        }
+    }
+}
+```
+
+##### SetTemperatureRequest
+
+**例子:**
+“小度小度,把卧室的温度设置为20度”
+
+**目的:**
+DuerOS发送给Bot的设置温度的请求
+
+###### Header
+
+|Property|Value|
+|---|---|
+|name|SetTemperatureRequest|
+|namespace|DuerOS.ConnectedHome.Control|
+
+###### Payload
+
+|Property|Description|Required|
+|---|---|---|
+| accessToken | 从设备云端取到的access token | Yes |
+| appliance object | 表示具体操作指令 | Yes |
+| appliance.applianceId | 设备标识符。标识符在用户拥有的所有设备上必须是唯一的。此外,标识符需要在同一设备的多个发现请求之间保持一致。标识符可以包含任何字母或数字和以下特殊字符:_ - =#; :? @&。标识符不能超过256个字符。 | Yes |
+| appliance.additionalApplianceDetails | 提供给Bot使用的设备或场景相关的附加信息的键值对。该属性的内容不能超过5000字节。而且DuerOS也不了解或使用这些数据。 | Yes,但可以为空 |
+| targetTemperature | 表示设备的温度设置的量的对象。包含一个属性值,它指定一个数字。 | Yes |
+
+SetTemperatureRequest 例子:
+```
+{
+    "header": {
+        "messageId": "01ebf625-0b89-4c4d-b3aa-32340e894688",
+        "name": "SetTemperatureRequest",
+        "namespace": "DuerOS.ConnectedHome.Control",
+        "payloadVersion": "1"
+    },
+    "payload": {
+        "targetTemperature": {
+            "value": 2.0
+        },
+        "accessToken": "[OAuth token here]",
+        "appliance": {
+            "additionalApplianceDetails": {},
+            "applianceId": "[Device ID for Ceiling Fan]",
+        }
+    }
+}
+```
+
+##### SetTemperatureConfirmation
+
+**度秘返回的结果例子:**
+“*设备name*已设置成功”
+
+**目的:**
+表示设备温度设置成功。表示Bot返回给DuerOS的成功的结果
+
+###### Header
+
+|Property|Value|
+|---|---|
+|name| SetTemperatureConfirmation |
+|namespace|DuerOS.ConnectedHome.Control|
+
+###### Payload
+
+|Property|Description|Required|
+|---|---|---|
+| mode | 表示设置之后的设备模式。 | Yes |
+| temperature | double类型,表示设置之后的值。 | Yes |
+| previousState object | 表示亮度变化之前的对象 | Yes |
+| previousState.mode | 表示设置之前的设备模式。 | Yes |
+| previousState.temperature | double类型,表示设置之前的值。 | Yes |
+
+SetTemperatureConfirmation 例子:
+```
+{
+    "header": {
+        "messageId": "780013dd-99d0-4c69-9e35-db0457f9f2a7",
+        "name": "SetTemperatureConfirmation",
+        "namespace": "DuerOS.ConnectedHome.Control",
+        "payloadVersion": "1"
+    },
+    "payload": {
+        "previousState": {
+            "mode": {
+                "value": "AUTO"
+            },
+            "temperature": {
+                "value": 25.0
+            }
+        },
+        "temperature": {
+            "value": 23.0
+        },
+        "mode": {
+            "value": "AUTO"
+        }
+    }
+}
+```
+
+#### 可控风速设备(Fan Speed Control Messages)
+
+##### IncrementFanSpeedRequest
+
+**例子:**
+“小度小度,把空调的风速增加一点”
+
+**目的:**
+DuerOS发送给Bot的调高风速的请求
+
+###### Header
+
+|Property|Value|
+|---|---|
+|name|IncrementFanSpeedRequest|
+|namespace|DuerOS.ConnectedHome.Control|
+
+###### Payload
+
+|Property|Description|Required|
+|---|---|---|
+| accessToken | 从设备云端取到的access token | Yes |
+| appliance object | 表示具体操作指令 | Yes |
+| appliance.applianceId | 设备标识符。标识符在用户拥有的所有设备上必须是唯一的。此外,标识符需要在同一设备的多个发现请求之间保持一致。标识符可以包含任何字母或数字和以下特殊字符:_ - =#; :? @&。标识符不能超过256个字符。 | Yes |
+| appliance.additionalApplianceDetails | 提供给Bot使用的设备或场景相关的附加信息的键值对。该属性的内容不能超过5000字节。而且DuerOS也不了解或使用这些数据。 | Yes,但可以为空 |
+| deltaFanSpeed | 表示设备的风速变化的量的对象。包含一个属性值,它指定一个double类型的数字,表示设备风速调整的值,其有效范围为0.0000至1.0000。 | Yes |
+
+IncrementFanSpeedRequest 例子:
+```
+{
+    "header": {
+        "messageId": "01ebf625-0b89-4c4d-b3aa-32340e894688",
+        "name": "IncrementFanSpeedRequest",
+        "namespace": "DuerOS.ConnectedHome.Control",
+        "payloadVersion": "1"
+    },
+    "payload": {
+        "deltaFanSpeed": {
+            "value": 0.5
+        },
+        "accessToken": "[OAuth token here]",
+        "appliance": {
+            "additionalApplianceDetails": {},
+            "applianceId": "[Device ID for Ceiling Fan]",
+        }
+    }
+}
+```
+
+##### IncrementFanSpeedConfirmation
+
+**度秘返回的结果例子:**
+“*设备name*已设置成功”
+
+**目的:**
+表示设备风速调高成功。表示Bot返回给DuerOS的成功的结果
+
+###### Header
+
+|Property|Value|
+|---|---|
+|name| IncrementFanSpeedConfirmation |
+|namespace|DuerOS.ConnectedHome.Control|
+
+###### Payload
+
+|Property|Description|Required|
+|---|---|---|
+| mode | 表示设置之后的设备模式。 | Yes |
+| fanSpeed | double类型,表示设置之后的值。 | Yes |
+| previousState object | 表示亮度变化之前的对象 | Yes |
+| previousState.mode | 表示设置之前的设备模式。 | Yes |
+| previousState.fanSpeed | double类型,表示设置之前的值。 | Yes |
+
+IncrementFanSpeedConfirmation 例子:
+```
+{
+    "header": {
+        "messageId": "780013dd-99d0-4c69-9e35-db0457f9f2a7",
+        "name": "IncrementFanSpeedConfirmation",
+        "namespace": "DuerOS.ConnectedHome.Control",
+        "payloadVersion": "1"
+    },
+    "payload": {
+        "previousState": {
+            "mode": {
+                "value": "AUTO"
+            },
+            "fanSpeed": {
+                "value": 0.5
+            }
+        },
+        "fanSpeed": {
+            "value": 1.0
+        },
+        "mode": {
+            "value": "AUTO"
+        }
+    }
+}
+```
+
+##### DecrementFanSpeedRequest
+
+**例子:**
+“小度小度,把空调的风速降低一点”
+
+**目的:**
+DuerOS发送给Bot的调低风速的请求
+
+###### Header
+
+|Property|Value|
+|---|---|
+|name|DecrementFanSpeedRequest|
+|namespace|DuerOS.ConnectedHome.Control|
+
+###### Payload
+
+|Property|Description|Required|
+|---|---|---|
+| accessToken | 从设备云端取到的access token | Yes |
+| appliance object | 表示具体操作指令 | Yes |
+| appliance.applianceId | 设备标识符。标识符在用户拥有的所有设备上必须是唯一的。此外,标识符需要在同一设备的多个发现请求之间保持一致。标识符可以包含任何字母或数字和以下特殊字符:_ - =#; :? @&。标识符不能超过256个字符。 | Yes |
+| appliance.additionalApplianceDetails | 提供给Bot使用的设备或场景相关的附加信息的键值对。该属性的内容不能超过5000字节。而且DuerOS也不了解或使用这些数据。 | Yes,但可以为空 |
+| deltaFanSpeed | 表示设备的风速变化的量的对象。包含一个属性值,它指定一个double类型的数字,表示设备风速调整的值,其有效范围为0.0000至1.0000。 | Yes |
+
+DecrementFanSpeedRequest 例子:
+```
+{
+    "header": {
+        "messageId": "01ebf625-0b89-4c4d-b3aa-32340e894688",
+        "name": "DecrementFanSpeedRequest",
+        "namespace": "DuerOS.ConnectedHome.Control",
+        "payloadVersion": "1"
+    },
+    "payload": {
+        "deltaFanSpeed": {
+            "value": 0.5
+        },
+        "accessToken": "[OAuth token here]",
+        "appliance": {
+            "additionalApplianceDetails": {},
+            "applianceId": "[Device ID for Ceiling Fan]",
+        }
+    }
+}
+```
+
+##### DecrementFanSpeedConfirmation
+
+**度秘返回的结果例子:**
+“*设备name*已设置成功”
+
+**目的:**
+表示设备风速调低成功。表示Bot返回给DuerOS的成功的结果
+
+###### Header
+
+|Property|Value|
+|---|---|
+|name| DecrementFanSpeedConfirmation |
+|namespace|DuerOS.ConnectedHome.Control|
+
+###### Payload
+
+|Property|Description|Required|
+|---|---|---|
+| mode | 表示设置之后的设备模式。 | Yes |
+| fanSpeed | double类型,表示设置之后的值。 | Yes |
+| previousState object | 表示亮度变化之前的对象 | Yes |
+| previousState.mode | 表示设置之前的设备模式。 | Yes |
+| previousState.fanSpeed | double类型,表示设置之前的值。 | Yes |
+
+DecrementFanSpeedConfirmation 例子:
+```
+{
+    "header": {
+        "messageId": "780013dd-99d0-4c69-9e35-db0457f9f2a7",
+        "name": "DecrementFanSpeedConfirmation",
+        "namespace": "DuerOS.ConnectedHome.Control",
+        "payloadVersion": "1"
+    },
+    "payload": {
+        "previousState": {
+            "mode": {
+                "value": "AUTO"
+            },
+            "fanSpeed": {
+                "value": 1.0
+            }
+        },
+        "fanSpeed": {
+            "value": 0.5
+        },
+        "mode": {
+            "value": "AUTO"
+        }
+    }
+}
+```
+
+##### SetModeRequest
+
+**例子:**
+“小度小度,把空调的模式调整为制冷”
+
+**目的:**
+DuerOS发送给Bot的设置模式的请求
+
+###### Header
+
+|Property|Value|
+|---|---|
+|name|SetModeRequest|
+|namespace|DuerOS.ConnectedHome.Control|
+
+###### Payload
+
+|Property|Description|Required|
+|---|---|---|
+| accessToken | 从设备云端取到的access token | Yes |
+| appliance object | 表示具体操作指令 | Yes |
+| appliance.applianceId | 设备标识符。标识符在用户拥有的所有设备上必须是唯一的。此外,标识符需要在同一设备的多个发现请求之间保持一致。标识符可以包含任何字母或数字和以下特殊字符:_ - =#; :? @&。标识符不能超过256个字符。 | Yes |
+| appliance.additionalApplianceDetails | 提供给Bot使用的设备或场景相关的附加信息的键值对。该属性的内容不能超过5000字节。而且DuerOS也不了解或使用这些数据。 | Yes,但可以为空 |
+| mode | 表示设备的模式设置的量的对象。包含一个属性值,它指定一种模式。 | Yes |
+
+SetModeRequest 例子:
+```
+{
+    "header": {
+        "messageId": "01ebf625-0b89-4c4d-b3aa-32340e894688",
+        "name": "SetModeRequest",
+        "namespace": "DuerOS.ConnectedHome.Control",
+        "payloadVersion": "1"
+    },
+    "payload": {
+        "mode": {
+            "value": "AUTO"
+        },
+        "accessToken": "[OAuth token here]",
+        "appliance": {
+            "additionalApplianceDetails": {},
+            "applianceId": "[Device ID for Ceiling Fan]",
+        }
+    }
+}
+```
+
+##### SetModeConfirmation
+
+**度秘返回的结果例子:**
+“*设备name*已设置成功”
+
+**目的:**
+表示设备模式设置成功。表示Bot返回给DuerOS的成功的结果
+
+###### Header
+
+|Property|Value|
+|---|---|
+|name| SetModeConfirmation |
+|namespace|DuerOS.ConnectedHome.Control|
+
+###### Payload
+
+|Property|Description|Required|
+|---|---|---|
+| mode | 表示设置之后的设备模式。 | Yes |
+| previousState object | 表示亮度变化之前的对象 | Yes |
+| previousState.mode | 表示设置之前的设备模式。 | Yes |
+
+SetModeConfirmation 例子:
+```
+{
+    "header": {
+        "messageId": "780013dd-99d0-4c69-9e35-db0457f9f2a7",
+        "name": "SetModeConfirmation",
+        "namespace": "DuerOS.ConnectedHome.Control",
+        "payloadVersion": "1"
+    },
+    "payload": {
+        "previousState": {
+            "mode": {
+                "value": "COOL"
+            }
+        },
+        "mode": {
+            "value": "AUTO"
+        }
+    }
+}
+```
+
+##### TimingSetModeRequest
+
+**例子:**
+“小度小度,1分钟后把空调的模式调整为制冷”
+
+**目的:**
+DuerOS发送给Bot的设置模式的请求
+
+###### Header
+
+|Property|Value|
+|---|---|
+|name|TimingSetModeRequest|
+|namespace|DuerOS.ConnectedHome.Control|
+
+###### Payload
+
+|Property|Description|Required|
+|---|---|---|
+| accessToken | 从设备云端取到的access token | Yes |
+| appliance object | 表示具体操作指令 | Yes |
+| appliance.applianceId | 设备标识符。标识符在用户拥有的所有设备上必须是唯一的。此外,标识符需要在同一设备的多个发现请求之间保持一致。标识符可以包含任何字母或数字和以下特殊字符:_ - =#; :? @&。标识符不能超过256个字符。 | Yes |
+| appliance.additionalApplianceDetails | 提供给Bot使用的设备或场景相关的附加信息的键值对。该属性的内容不能超过5000字节。而且DuerOS也不了解或使用这些数据。 | Yes,但可以为空 |
+| mode | 表示设备的模式设置的量的对象。包含一个属性值,它指定一种模式。 | Yes |
+| timestamp | 表示设备定时设置的量的对象。包含一个属性值,它指定一个数字,代表时间戳。 | Yes |
+
+TimingSetModeRequest 例子:
+```
+{
+    "header": {
+        "messageId": "01ebf625-0b89-4c4d-b3aa-32340e894688",
+        "name": "TimingSetModeRequest",
+        "namespace": "DuerOS.ConnectedHome.Control",
+        "payloadVersion": "1"
+    },
+    "payload": {
+        "mode": {
+            "value": "AUTO"
+        },
+        "timestamp": {
+            "value": 2.0
+        },
+        "accessToken": "[OAuth token here]",
+        "appliance": {
+            "additionalApplianceDetails": {},
+            "applianceId": "[Device ID for Ceiling Fan]",
+        }
+    }
+}
+```
+
+##### TimingSetModeConfirmation
+
+**度秘返回的结果例子:**
+“*设备name*已设置成功”
+
+**目的:**
+表示设备模式设置成功。表示Bot返回给DuerOS的成功的结果
+
+###### Header
+
+|Property|Value|
+|---|---|
+|name| TimingSetModeConfirmation |
+|namespace|DuerOS.ConnectedHome.Control|
+
+###### Payload
+
+|Property|Description|Required|
+|---|---|---|
+| mode | 表示设置之后的设备模式。 | Yes |
+| previousState object | 表示亮度变化之前的对象 | Yes |
+| previousState.mode | 表示设置之前的设备模式。 | Yes |
+
+TimingSetModeConfirmation 例子:
+```
+{
+    "header": {
+        "messageId": "780013dd-99d0-4c69-9e35-db0457f9f2a7",
+        "name": "TimingSetModeConfirmation",
+        "namespace": "DuerOS.ConnectedHome.Control",
+        "payloadVersion": "1"
+    },
+    "payload": {
+        "previousState": {
+            "mode": {
+                "value": "COOL"
+            }
+        },
+        "mode": {
+            "value": "AUTO"
+        }
+    }
+}
+```
+
+### 查询状态(Query Message)
+
+#### 查询空气质量
+
+##### GetAirPM25Request
+
+**例子:**
+“小度小度,查一下卧室pm2.5”
+
+**目的:**
+DuerOS发送给Bot的设置模式的请求
+
+###### Header
+
+|Property|Value|
+|---|---|
+|name|GetAirPM25Request|
+|namespace|DuerOS.ConnectedHome.Query|
+
+###### Payload
+
+|Property|Description|Required|
+|---|---|---|
+| accessToken | 从设备云端取到的access token | Yes |
+| appliance object | 表示具体操作指令 | Yes |
+| appliance.applianceId | 设备标识符。标识符在用户拥有的所有设备上必须是唯一的。此外,标识符需要在同一设备的多个发现请求之间保持一致。标识符可以包含任何字母或数字和以下特殊字符:_ - =#; :? @&。标识符不能超过256个字符。 | Yes |
+| appliance.additionalApplianceDetails | 提供给Bot使用的设备或场景相关的附加信息的键值对。该属性的内容不能超过5000字节。而且DuerOS也不了解或使用这些数据。 | Yes,但可以为空 |
+
+GetAirPM25Request 例子:
+```
+{
+    "header": {
+        "messageId": "01ebf625-0b89-4c4d-b3aa-32340e894688",
+        "name": "GetAirPM25Request",
+        "namespace": "DuerOS.ConnectedHome.Query",
+        "payloadVersion": "1"
+    },
+    "payload": {
+        "accessToken": "[OAuth token here]",
+        "appliance": {
+            "additionalApplianceDetails": {},
+            "applianceId": "[Device ID for Ceiling Fan]",
+        }
+    }
+}
+```
+
+##### GetAirPM25Confirmation
+
+**度秘返回的结果例子:**
+“当前卧室pm2.5为100”
+
+**目的:**
+表示设备查询结果成功。表示Bot返回给DuerOS的成功的结果
+
+###### Header
+
+|Property|Value|
+|---|---|
+|name| GetAirPM25Confirmation |
+|namespace| DuerOS.ConnectedHome.Query |
+
+###### Payload
+
+|Property|Description|Required|
+|---|---|---|
+| PM25 | 表示当前PM2.5的数值。 | Yes |
+
+GetAirPM25Confirmation 例子:
+```
+{
+    "header": {
+        "messageId": "780013dd-99d0-4c69-9e35-db0457f9f2a7",
+        "name": "GetAirPM25Confirmation",
+        "namespace": "DuerOS.ConnectedHome.Query",
+        "payloadVersion": "1"
+    },
+    "payload": {
+        "PM25": {
+            "value": 100
+        }
+    }
+}
+```
+
+### 错误消息(Error Message)
+
+当 DuerOS 向 Bot 发送控制请求时,可能会出现不同种类的错误,如果需要,Bot应返回相应的错误类型和信息。Bot不需要返回每个错误类型,仅返回错误对应的故障类型。本节中列出了错误类型和详细信息。除非另有说明,否则错误消息不适用于设备发现,并且不应返回错误消息作为对DiscoverAppliancesRequest的响应。
+
+用户故障:由于用户错误操作,请求可能会无效,会发生以下这些错误。 例如,用户要求将空调设置为1000度。
+* ValueOutOfRangeError
+* TargetOfflineError
+* NoSuchTargetError
+* BridgeOfflineError
+
+Bot故障:当请求有效时,由于硬件问题或限制,也可能会出现以下这些错误,Bot无法完成所需的任务。
+* DriverInternalError
+* DependentServiceUnavailableError
+* NotSupportedInCurrentModeError
+* RateLimitExceededError
+* TargetBridgeConnectivityUnstableError
+* TargetFirmwareOutdatedError
+* TargetBridgeFirmwareOutdatedError
+* TargetHardwareMalfunctionError
+* TargetBridgeHardwareMalfunctionError
+* TargetConnectivityUnstableError
+* TargetHardwareMalfunctionError
+* UnableToGetValueError
+* UnableToSetValueError
+* UnwillingToSetValueError
+
+其他故障:当请求中的数据内容无法满足时,会发生这些错误; 认证令牌无效,或技能适配器无法满足请求的其他方面。
+* ExpiredAccessTokenError
+* InvalidAccessTokenError
+* UnsupportedTargetError
+* UnsupportedOperationError
+* UnsupportedTargetSettingError
+* UnexpectedInformationReceivedError
+
+#### 用户故障(User Faults)
+当用户给出不正确的指示或度秘不能完成的指令时,会发生以下错误。
+
+##### ValueOutOfRangeError
+目的:表示用户请求将目标值设置为超出其支持范围的值。 例如,用户说:“小度小度,将厨房设置为1000度”。
+
+###### Payload
+
+|Property|Description|Required|
+|---|---|---|
+| minimumValue | 64位双精度值,表示目标设备设置允许的最低值。 | Yes |
+| maximumValue | 64位双精度值,表示目标设备设置允许的最高值。 | Yes |
+
+ValueOutOfRangeError 例子:
+```
+{
+  "header":{
+    "namespace":"DuerOS.ConnectedHome.Control",
+    "name":" ValueOutOfRangeError",
+    "payloadVersion":"1",
+    "messageId":"697fe957-c842-4545-a159-8a8c75fbe5bd"
+  },
+  "payload":{
+    "minimumValue":15.0,
+    "maximumValue":30.0
+  }
+}
+```
+
+##### TargetOfflineError
+目的:表示目标设备未连接到用户的设备云或设备云不在线。
+
+###### Payload
+
+|Property|Description|Required|
+|---|---|---|
+| N/A | N/A | N/A |
+
+TargetOfflineError 例子:
+```
+{
+  "header":{
+    "namespace":"DuerOS.ConnectedHome.Control",
+    "name":"TargetOfflineError",
+    "payloadVersion":"1",
+    "messageId":"15a248f6-8ab5-433d-a3ac-73c358e0bebd"
+  },
+  "payload":{
+  }
+}
+```
+
+##### BridgeOfflineError 
+目的:指示目标设备连接到已关闭电源。
+
+###### Payload
+
+|Property|Description|Required|
+|---|---|---|
+| N/A | N/A | N/A |
+
+BridgeOfflineError 例子:
+```
+{
+  "header":{
+    "namespace":"DuerOS.ConnectedHome.Control",
+    "name":"BridgeOfflineError",
+    "payloadVersion":"1",
+    "messageId":"15a248f6-8ab5-433d-a3ac-73c358e0bebd"
+  },
+  "payload":{
+  }
+}
+```
+
+#### Bot故障(Bot Faults)
+当Bot与设备云交互出现问题时,会发生以下错误。在这些情况下,用户请求有效,但由于某种原因无法完成。
+
+##### DriverInternalError
+目的:指示Bot内的通用运行时错误。如果可能,应该返回一个更具体的错误。
+
+###### Payload
+
+|Property|Description|Required|
+|---|---|---|
+| N/A | N/A | N/A |
+
+DriverInternalError 例子:
+```
+{
+  "header":{
+    "namespace":"DuerOS.ConnectedHome.Control",
+    "name":"DriverInternalError",
+    "payloadVersion":"1",
+    "messageId":"15a248f6-8ab5-433d-a3ac-73c358e0bebd"
+  },
+  "payload":{
+  }
+}
+```
+
+##### DependentServiceUnavailableError 
+目的:表示技Bot依赖的模块不可用,Bot无法完成请求。
+
+###### Payload
+
+|Property|Description|Required|
+|---|---|---|
+| dependentServiceName | 表示不可用的依赖模块的字符串。必须以字母数字字符和空格指定。此值在256个字符后截断。 | Yes |
+
+DependentServiceUnavailableError 例子:
+```
+{
+  "header":{
+    "namespace":"DuerOS.ConnectedHome.Control",
+    "name":"DependentServiceUnavailableError",
+    "payloadVersion":"1",
+    "messageId":"15a248f6-8ab5-433d-a3ac-73c358e0bebd"
+  },
+  "payload":{
+    "dependentServiceName":"Customer Credential Database"
+  }
+}
+```
+
+##### TargetConnectivityUnstableError  
+目的:表示目标设备的云连接不稳定可靠。
+
+###### Payload
+
+|Property|Description|Required|
+|---|---|---|
+| N/A | N/A | N/A |  
+
+TargetConnectivityUnstableError  例子:
+```
+{
+  "header":{
+    "namespace":"DuerOS.ConnectedHome.Control",
+    "name":"TargetConnectivityUnstableError ",
+    "payloadVersion":"1",
+    "messageId":"15a248f6-8ab5-433d-a3ac-73c358e0bebd"
+  },
+  "payload":{
+  }
+}
+```
+
+##### TargetBridgeConnectivityUnstableError
+目的:表示连接目标设备的家庭hub或网桥的云连接不稳定和不可靠。
+
+###### Payload
+
+|Property|Description|Required|
+|---|---|---|
+| N/A | N/A | N/A |  
+
+TargetBridgeConnectivityUnstableError 例子:
+```
+{
+  "header":{
+    "namespace":"DuerOS.ConnectedHome.Control",
+    "name":"TargetBridgeConnectivityUnstableError",
+    "payloadVersion":"1",
+    "messageId":"15a248f6-8ab5-433d-a3ac-73c358e0bebd"
+  },
+  "payload":{
+  }
+}
+```
+
+##### TargetFirmwareOutdatedError
+目的:表示目标设备的固件版本太低。
+
+###### Payload
+
+|Property|Description|Required|
+|---|---|---|
+| minimumFirmwareVersion | 表示最低允许固件版本。不能超过256个字符。 | Yes |  
+| currentFirmwareVersion | 表示当前固件版本。不能超过256个字符。 | Yes | 
+
+TargetFirmwareOutdatedError 例子:
+```
+{
+  "header":{
+    "namespace":"DuerOS.ConnectedHome.Control",
+    "name":"TargetFirmwareOutdatedError",
+    "payloadVersion":"1",
+    "messageId":"15a248f6-8ab5-433d-a3ac-73c358e0bebd"
+  },
+  "payload":{
+    "minimumFirmwareVersion":"17",
+    "currentFirmwareVersion":"6"
+  }
+}
+```
+
+##### TargetBridgeFirmwareOutdatedError
+目的:表示连接目标设备的家庭hub或网桥的固件版本太低。
+
+###### Payload
+
+|Property|Description|Required|
+|---|---|---|
+| minimumFirmwareVersion | 表示最低允许固件版本。不能超过256个字符。 | Yes |  
+| currentFirmwareVersion | 表示当前固件版本。不能超过256个字符。 | Yes | 
+
+TargetBridgeFirmwareOutdatedError 例子:
+```
+{
+  "header":{
+    "namespace":"DuerOS.ConnectedHome.Control",
+    "name":"TargetBridgeFirmwareOutdatedError",
+    "payloadVersion":"1",
+    "messageId":"15a248f6-8ab5-433d-a3ac-73c358e0bebd"
+  },
+  "payload":{
+    "minimumFirmwareVersion":"17",
+    "currentFirmwareVersion":"6"
+  }
+}
+```
+
+##### TargetHardwareMalfunctionError
+目的:表示目标设备出现硬件故障。
+
+###### Payload
+
+|Property|Description|Required|
+|---|---|---|
+| N/A | N/A | N/A |  
+
+TargetHardwareMalfunctionError 例子:
+```
+{
+  "header":{
+    "namespace":"DuerOS.ConnectedHome.Control",
+    "name":"TargetHardwareMalfunctionError",
+    "payloadVersion":"1",
+    "messageId":"15a248f6-8ab5-433d-a3ac-73c358e0bebd"
+  },
+  "payload":{
+  }
+}
+```
+
+##### TargetBridgeHardwareMalfunctionError
+目的:表示连接目标设备的家庭hub或桥接器出现硬件故障。
+
+###### Payload
+
+|Property|Description|Required|
+|---|---|---|
+| N/A | N/A | N/A |  
+
+TargetBridgeHardwareMalfunctionError 例子:
+```
+{
+  "header":{
+    "namespace":"DuerOS.ConnectedHome.Control",
+    "name":"TargetBridgeHardwareMalfunctionError",
+    "payloadVersion":"1",
+    "messageId":"15a248f6-8ab5-433d-a3ac-73c358e0bebd"
+  },
+  "payload":{
+  }
+}
+```
+
+##### UnableToGetValueError
+目的:表示尝试在目标设备上获取指定值时发生错误。当返回此错误时,适当的errorInfo.code值可以让DuerOS能够适应不同类型的故障。您只需生成适用于目标设备的错误代码。
+
+###### Payload
+
+|Property|Description|Required|
+|---|---|---|
+| errorInfo | 描述为什么不能设置值的错误对象。 | Yes |  
+| errorInfo.code | 字符串格式的错误代码。有效值是: DEVICE_AJAR:由于门打开,无法获取指定的状态。DEVICE_BUSY:设备正忙。DEVICE_JAMMED:设备卡住。DEVICE_OVERHEATED:设备过热。HARDWARE_FAILURE:由于未确定的硬件故障,请求失败。LOW_BATTERY:设备的电池电量不足。NOT_CALIBRATED:设备未校准。 | Yes | 
+| errorInfo.Description | 来自设备制造商的错误的自定义描述。 | No |  
+
+UnableToGetValueError 例子:
+```
+{
+  "header":{
+    "namespace":"DuerOS.ConnectedHome.Control",
+    "name":"UnableToGetValueError",
+    "payloadVersion":"1",
+    "messageId":"917314cd-ca00-49ca-b75e-d6f65ac43503"
+  },
+  "payload":{
+    "errorInfo":{
+      "code":"DEVICE_JAMMED",
+      "description":"A custom description of the error.."
+    }
+  }
+}
+```
+
+##### UnableToSetValueError
+目的:表示尝试在目标设备上设置指定值时发生错误。当返回此错误时,适当的errorInfo.code值使得DuerOS能够适应不同类型的故障。您只需生成适用于目标设备的错误代码。
+
+###### Payload
+
+|Property|Description|Required|
+|---|---|---|
+| errorInfo | 描述为什么不能设置值的错误对象。 | Yes |  
+| errorInfo.code | 字符串格式的错误代码。有效值是: DEVICE_AJAR:由于门打开,无法获取指定的状态。DEVICE_BUSY:设备正忙。DEVICE_JAMMED:设备卡住。DEVICE_OVERHEATED:设备过热。HARDWARE_FAILURE:由于未确定的硬件故障,请求失败。LOW_BATTERY:设备的电池电量不足。NOT_CALIBRATED:设备未校准。 | Yes | 
+| errorInfo.Description | 来自设备制造商的错误的自定义描述。 | No |  
+
+UnableToSetValueError 例子:
+```
+{
+  "header":{
+    "namespace":"DuerOS.ConnectedHome.Control",
+    "name":"UnableToSetValueError",
+    "payloadVersion":"1",
+    "messageId":"917314cd-ca00-49ca-b75e-d6f65ac43503"
+  },
+  "payload":{
+    "errorInfo":{
+      "code":"DEVICE_JAMMED",
+      "description":"A custom description of the error.."
+    }
+  }
+}
+```
+
+##### UnwillingToSetValueError
+目的:表示目标设备商不愿意在指定的设备上设置请求的值。使用此错误进行温度设置。
+
+###### Payload
+
+|Property|Description|Required|
+|---|---|---|
+| errorInfo | 描述为什么不能设置值的错误对象。 | Yes |  
+| errorInfo.code | 字符串格式的错误代码。目前,代码的有效值为ThermostatIsOff,表示由于恒温器关闭,制造商不愿自动将其启动,因此被请求的操作被拒绝。 | Yes | 
+| errorInfo.Description | 来自设备制造商的错误的自定义描述。 | No |  
+
+UnwillingToSetValueError 例子:
+```
+{
+  "header":{
+    "namespace":"DuerOS.ConnectedHome.Control",
+    "name":"UnwillingToSetValueError",
+    "payloadVersion":"1",
+    "messageId":"917314cd-ca00-49ca-b75e-d6f65ac43503"
+  },
+  "payload":{
+    "errorInfo":{
+      "code":"ThermostatIsOff",
+      "description":"The requested operation is unsafe because it requires changing the mode."
+    }
+  }
+}
+```
+
+##### RateLimitExceededError
+目的:表示超出设备接受的最大请求数。此消息提供有关设备的最大请求数和这些请求的时间单位的信息。例如,如果设备每小时接受四个请求,则消息应分别指定4和HOUR作为rateLimit和timeUnit。
+
+###### Payload
+
+|Property|Description|Required|
+|---|---|---|
+| rateLimit | Integer,表示设备在指定的时间单位中接受的最大请求数。 | Yes |  
+| timeUnit | 大写字符串,表示rateLimit的时间单位,如MINUTE,HOUR或DAY。 | Yes | 
+
+RateLimitExceededError 例子:
+```
+{
+  "header":{
+    "namespace":"DuerOS.ConnectedHome.Control",
+    "name":"RateLimitExceededError",
+    "payloadVersion":"1",
+    "messageId":"917314cd-ca00-49ca-b75e-d6f65ac43503"
+  },
+  "payload":{
+    "errorInfo":{
+      "rateLimit":"10",
+      "timeUnit":"HOUR"
+    }
+  }
+}
+```
+
+##### NotSupportedInCurrentModeError
+目的:表示目标设备处于无法通过DuerOS进行控制的模式,并提供有关设备当前模式的信息。
+
+###### Payload
+
+|Property|Description|Required|
+|---|---|---|
+| currentDeviceMode | 表示设备当前模式的字符串。有效值为AUTO,AWAY,COLOR,COOL,HEAT和OTHER。 | Yes |  
+
+NotSupportedInCurrentModeError 例子:
+```
+{
+  "header":{
+    "namespace":"DuerOS.ConnectedHome.Control",
+    "name":"NotSupportedInCurrentModeError",
+    "payloadVersion":"1",
+    "messageId":"917314cd-ca00-49ca-b75e-d6f65ac43503"
+  },
+  "payload":{
+    "errorInfo":{
+      "currentDeviceMode":"COOL",
+    }
+  }
+}
+```
+
+#### 其他错误(Other Faults)
+当一个或多个请求输入无效DuerOS无法处理时,会发生以下错误。例如,访问令牌(access token)无效。
+
+##### ExpiredAccessTokenError
+目的:表示用于认证的访问令牌(access token)已过期,不再有效。
+
+###### Payload
+
+|Property|Description|Required|
+|---|---|---|
+| N/A | N/A | N/A |  
+
+ExpiredAccessTokenError 例子:
+```
+{
+  "header":{
+    "namespace":"DuerOS.ConnectedHome.Control",
+    "name":"ExpiredAccessTokenError",
+    "payloadVersion":"1",
+    "messageId":"917314cd-ca00-49ca-b75e-d6f65ac43503"
+  },
+  "payload":{
+  }
+}
+```
+
+##### InvalidAccessTokenError
+目的:表示用于身份验证的访问令牌(access token)无效,除了已过期的原因。
+
+###### Payload
+
+|Property|Description|Required|
+|---|---|---|
+| N/A | N/A | N/A |  
+
+InvalidAccessTokenError 例子:
+```
+{
+  "header":{
+    "namespace":"DuerOS.ConnectedHome.Control",
+    "name":"InvalidAccessTokenError",
+    "payloadVersion":"1",
+    "messageId":"917314cd-ca00-49ca-b75e-d6f65ac43503"
+  },
+  "payload":{
+  }
+}
+```
+
+##### UnsupportedTargetError
+目的:指示Bot不支持目标设备。
+
+###### Payload
+
+|Property|Description|Required|
+|---|---|---|
+| N/A | N/A | N/A |  
+
+UnsupportedTargetError 例子:
+```
+{
+  "header":{
+    "namespace":"DuerOS.ConnectedHome.Control",
+    "name":"UnsupportedTargetError",
+    "payloadVersion":"1",
+    "messageId":"917314cd-ca00-49ca-b75e-d6f65ac43503"
+  },
+  "payload":{
+  }
+}
+```
+
+##### UnsupportedOperationError
+目的:表示目标设备不支持请求的操作。
+
+###### Payload
+
+|Property|Description|Required|
+|---|---|---|
+| N/A | N/A | N/A |  
+
+UnsupportedOperationError 例子:
+```
+{
+  "header":{
+    "namespace":"DuerOS.ConnectedHome.Control",
+    "name":"UnsupportedOperationError",
+    "payloadVersion":"1",
+    "messageId":"917314cd-ca00-49ca-b75e-d6f65ac43503"
+  },
+  "payload":{
+  }
+}
+```
+
+##### UnsupportedTargetSettingError
+目的:表示所请求的设置对于指定的设备和操作无效。
+
+###### Payload
+
+|Property|Description|Required|
+|---|---|---|
+| N/A | N/A | N/A |  
+
+UnsupportedTargetSettingError 例子:
+```
+{
+  "header":{
+    "namespace":"DuerOS.ConnectedHome.Control",
+    "name":"UnsupportedTargetSettingError",
+    "payloadVersion":"1",
+    "messageId":"917314cd-ca00-49ca-b75e-d6f65ac43503"
+  },
+  "payload":{
+  }
+}
+```
+
+##### UnexpectedInformationReceivedError
+目的:由于格式错误,Bot无法处理请求消息。
+
+###### Payload
+
+|Property|Description|Required|
+|---|---|---|
+| faultingParameter | 请求消息中的属性或字段格式错误,导致Bot无法处理。 | Yes |  
+
+UnexpectedInformationReceivedError 例子:
+```
+{
+  "header":{
+    "namespace":"DuerOS.ConnectedHome.Control",
+    "name":"UnexpectedInformationReceivedError",
+    "payloadVersion":"1",
+    "messageId":"917314cd-ca00-49ca-b75e-d6f65ac43503"
+  },
+  "payload":{
+    "faultingParameter": "value"
+  }
+}
+```