# 数字管家护花使者设备profile定义说明

##### 下发命令定义

###### 开关浇水(SetMotor)

```
{ 
	"service_id": "SmartWatering",                  // 产品服务ID,固定为SmartWatering
	"command_name": "SetMotor",       				// 命令名称,固定为SetMotor
	"paras":
	{
   		"MotorStatus": "ON"               			// 命令值(类型String):ON/OFF
   		"Capacity": 200 							// 浇水的容量(类型int) : 1 - 500, 一次浇水不能超过500ml
	}
}
```

###### 开关补光灯(SetLampStatus)

```
{ 
	"service_id": "SmartWatering",                  // 产品服务ID,固定为SmartWatering
	"command_name": "SetLampStatus",       			// 命令名称,固定为SetLampStatus
	"paras":
	{
   		"LampStatus": "ON"               			// 命令值(类型String):ON/OFF
   		"DutyCycle": 200 							// 灯亮度(类型int) : 0-100
	}
}
```

###### 开关风扇(SetSpeedLevel)

```
{ 
	"service_id": "SmartWatering",                  // 产品服务ID,固定为SmartWatering
	"command_name": "SetSpeedLevel",       			// 命令名称,固定为SetSpeedLevel
	"paras":
	{
   		"LampStatus": "FanStatus"               	// 命令值(类型String):ON/OFF
   		"SpeedLevel": 0 							// 风扇电机转速(类型int) : 0-4
	}
}
```



###### 日程设置(SetSchedule)

```
{
	"service_id": "SmartWatering",      // 产品服务ID,固定为SmartWatering
	"command_name": "SetSchedule",     	// 命令名称,固定为SetSchedule
	"paras":
 	{
 		"ScheduleID":0			// 日程ID号(类型int): 0 - 65535
 		"option":"A"			// 日程操作(类型string):长度为1,暂指定3个操作:A(新增日程),U(更新日程),D(删除日程)
		"Day": "1,3,5",   		// 开始浇水的日期,以星期为单位 
								// 取值(类型string): "1,2,3,4,5,6,7", 1-7代表周一到周日,每天之间用逗号(,)隔开,可以只设1天,也可以设置多天
		"StartHour": 18,     	// 开始浇水的小时时间(类型int) : 0 - 23
		"StartMinute": 12,   	// 开始浇水的分钟时间(类型int) : 0-59
		"Command":"{"MotorStatus":"ON", "Capacity": 200}"	// 日程到点后需要执行的命令。 MotorStatus:打开/关闭浇水功能,Capacity:浇水容量
	}
}
```

##### 属性获取定义

属性是指设备当前的一些状态,由设备端主动上报到云端

```
{
	serviceId: SmartWatering,      // 产品服务ID,固定为SmartWatering
	data: 
	{
		"MotorStatus":"ON",   		// 当前浇水状态,是否在浇水(类型String):ON/OFF
		"FanStatus":"ON",   		// 当前风扇电机状态(类型String):ON/OFF
		"LampStatus":"ON",   		// 当前灯状态状态(类型String):ON/OFF
		"Temperature":38,			// 当前空气的温度(类型int) 0 - 65535
		"Humidity":58,         		// 当前空气的湿度(类型int):0 - 65535
		"Moisture":6    			// 当前土壤的水分(类型int):0 - 65535
		"Lux":6    			        // 当前光照的强度(类型int):0 - 65535
		"SpeedLevel":0    			// 当前风扇电机转速(类型int):0 - 4
  		"DutyCycle":0    			// 当前灯亮度(类型int):0 - 100
		"Capacity":0    			// 当前水容量(类型int):0 - 500
	}
}
```



##### 备注

护花使者设备相关信息

| 标签 | 名字                | 描述                                                         | 样例                     |
| :--: | ------------------- | ------------------------------------------------------------ | ------------------------ |
|  1   | IoTDA平台设备产品ID | 由IoTDA平台中获取,使用自身,标识设备产品品类。典型值24字节,小于32字节 | 61f26336de9933029be4e155 |
|  2   | NodeID              | 设备节点ID,辨识同品类中,不同的设备。典型值8字节,小于64字节 | Watering01               |
|  3   | DevicePwd           | 设备认证秘钥,用于设备连接IoTDA认证。典型值8字节,小于32字节 | 12345678                 |
|  4   | 配网标识            | 标识当前设备配网类型,1字节<br />0:不需要配网设备(如手表平板等自带蜂窝网络的设备);<br />1:NAN配网 + softAP组合模式配网(能自动使用当前网络配网,不需要输入密码);<br />2:softAP配网,连入设备热点,输入wifi密码进行配网;<br />3:ble蓝牙配网;<br />4:NAN配网 近距离贴近设备配网(能自动使用当前网络配网,不需要输入密码); | 1                        |
|  5   | ApSSID              | 设备自身热点名,典型值12字节,小于32字节,NAN配网和softAp配网必须提供;构成一般为前缀teamX + nodeID | teamX-Watering01         |



FA中Commandutil.java文件里修改补光灯、风扇的serviceId

例如getLampStatusCommand中补光灯设置。

原补光灯serviceId

```
    public static Command getLampStatusCommand(boolean isOn, int dutyCycle) {
        JSONObject params = new JSONObject();
        if (isOn) {
            params.put("LampStatus", "ON");
            params.put("DutyCycle", dutyCycle);
        } else {
            params.put("LampStatus", "OFF");
            params.put("DutyCycle", 1);
        }
        return new Command("SetLampStatus","SmartLamp", JSONObject.toJSONString(params));
    }
```

修改后,补光灯serviceId

```
    public static Command getLampStatusCommand(boolean isOn, int dutyCycle) {
        JSONObject params = new JSONObject();
        if (isOn) {
            params.put("LampStatus", "ON");
            params.put("DutyCycle", dutyCycle);
        } else {
            params.put("LampStatus", "OFF");
            params.put("DutyCycle", 0);
        }
        return new Command("SetLampStatus", "SmartWatering", JSONObject.toJSONString(params));
    }
```

同理可设置风扇的serviceId