空调

设备复位方法

- 新设备开箱通电,默认自动进入配网状态;
- 人工重置设备,例如长按复位键5s;
- 从小度App删除设备,触发设备重置自动进入配网状态;

config约定

- 注册的model id为: 0x1000(Generic OnOff Server)和0x0002011C(Data Trans Server Model)
    - 用于支持『打开空调』、『关闭空调』、『空调温度调高』等操作
- 订阅『空调』品类默认位置地址:0xC1A0
    - 用于将设备加入到默认的位置,该位置用户可以在小度App中动态修改为『卧室』、『餐厅』等,每个位置会有一个对应的分组地址(参考[基础规范](../ble-mesh-private.md))

控制命令

具体采用的控制model和model中的所有参数字段枚举

- 开关: Generic OnOff Client Model
- 设置目标温度: Data Trans Client Model(Opcode = 0xFD1C01, AttributeType = 0x010C)
- 调整模式: Data Trans Client Model(Opcode = 0xFD1C01, AttributeType = 0xF004)
- 调整风速: Data Trans Client Model(Opcode = 0xFD1C01, AttributeType = 0x010A)

状态同步

空调启动或设备状态被其他设备(如有,例如手机App、墙面开关等)改变后通知音箱

- 开关: Data Trans Client Model(Opcode = 0xF81C01, AttributeType = 0x0100)
- 温度: Data Trans Client Model(Opcode = 0xF81C01, AttributeType = 0x010D)
- 目标温度: Data Trans Client Model(Opcode = 0xF81C01, AttributeType = 0x010C)
- 模式: Data Trans Client Model(Opcode = 0xF81C01, AttributeType = 0xF004)
- 风速: Data Trans Client Model(Opcode = 0xF81C01, AttributeType = 0x010A)

Data Trans Model有关空调的参数说明

AttributeType AttributeValue AttributeName Direction Description
0x0100 uint8 开关状态 音箱发送mesh设备或mesh设备发送音箱 表示设备的开关状态。变化以后需要上报
0x010D uint16 温度 mesh设备发送音箱 无符号整数,范围为[0,65535],与对应温度的映射关系是:若值是X,则表示的温度T=X/100-273.15。例如:若X=30315,则T=30315/100-273.15=30,即为30度。每变化1度需要上报一次。
0x010C uint16 目标温度 音箱发送mesh设备或mesh设备发送音箱 无符号整数,范围为[0,65535],与对应温度的映射关系是:若值是X,则表示的温度T=X/100-273.15。例如:若X=30315,则T=30315/100-273.15=30,即为30度。变化以后需要上报。
0xF004 uint16 模式 音箱发送mesh设备或mesh设备发送音箱 无符号整数枚举值。该字段需要在申请productId时,提供合法取值范围。可选的取值包括:2:自动模式,9:制冷模式,10:制热模式,12:送风模式,13:除湿模式,14:睡眠模式,230:节能模式。变化以后需要上报。
0x010A uint8 风速 音箱发送mesh设备或mesh设备发送音箱 无符号整数枚举值。该字段需要在申请productId时,提供合法取值范围和映射关系(最大max,最小min,低档low,中档mid,高档high分别映射到哪一档,便于支持对应的语音控制)。可选的取值包括:1:一档,2:二档,3:三档,4:四档,5:五档,6:六档,7:七档,8:八档,9:九档,10:十档,255:自动档。变化以后需要上报。

参数数据示例

- 将空调设置到目标温度的指令
    - AttributeType为0x010C、控制参数为目标温度T=27摄氏度,则目标值为27*100+27315=30015,即AttributeValue为30015,即十六进制表示为753F,假设此时TID的值为1,那么完整的Message部分为0x010C01753F。
  由于音箱发给空调数据的大小端序为小端序,因此空调收到的指令Message部分为0x010C013F75。
  空调收到的整体的Mesh消息的Opcode部分为0xFD1C01,因此空调收到的整体数据部分为0xFD1C01010C013F75。
  空调收到以后,需要回复Opcode为Set State Status的消息给音箱,以使得音箱确认消息发送成功(参考[基础规范](../ble-mesh-private.md))。
- 将空调的当前温度上报
    - 空调的当前温度上报是在检测到温度有发生变化时,同步给音箱。使用Opcode = 0xF81C01的消息上报,音箱不需要回复。
  以空调的当前温度为27度例,则目标值为27*100+27315=30015,即AttributeValue为30015,十六进制表示为753F,假设此时TID的值为10,那么完整的Message部分为0x0A010D753F。
  由于空调发送音箱的数据大小端序为小端序,因此音箱收到的Message数据部分为0x0A0D013F75,整体消息为0xF81C010A0D013F75。

空调的状态上报规范

- 空调在上电、开机、配网后,上报当前空调的开关状态。
- 非音箱指令引起的状态变化,如面板开关按键被按下、模式调整按键被按下,环境温度发生变化等,需要上报状态。