快播小电影 确立期许属性值完结灯泡景况

快播小电影 确立期许属性值完结灯泡景况

物联网平台提供确立期许属性值功能快播小电影,通过缓存确立属性的期许值,末端从物联网平台云表完结确立属性值。本文先容确立期许属性值,末端从物联网平台完结灯泡景况的关连操作。

家具创建顺利后,单击赶赴界说物模子,为家具添加物模子并发布,请参见单个添加物模子。在左侧导航栏,聘用确立管理 > 确立,单击添加确立,在灯泡家具下添加确立:Lamp。在云表确立和查询期许属性值

您可在通过调用物联网平台云表API,确立和赢得确立最新期许属性值。

具体操作快播小电影,请参见云表API。本文以Java SDK(云表)为例。

调用SetDeviceDesiredProperty,确立期许属性值。
DefaultProfile profile = DefaultProfile.getProfile(
        "<RegionId>",          // 地域ID
        "<accessKey>",     //阿里云账号的AccessKey ID
        "<accessSecret>"); 阿里云账号AccessKey Secret
IAcsClient client = new DefaultAcsClient(profile);

// 创建API央求并确立参数
SetDeviceDesiredPropertyRequest request = new SetDeviceDesiredPropertyRequest();
request.setIotInstanceId("iot-060***");
request.setDeviceName("Lamp");
request.setProductKey("g4r***");
// 待确立的属性identifier与期许属性值
request.setItems("{\"LightStatus\": 1}");
request.setVersions("{\"LightStatus\": 0}");

// 发起央求并处理嘱咐或终点
try {
    SetDeviceDesiredPropertyResponse response = client.getAcsResponse(request);
    System.out.println(new Gson().toJson(response));
} catch (ServerException e) {
    e.printStackTrace();
} catch (ClientException e) {
    System.out.println("ErrCode:" + e.getErrCode());
    System.out.println("ErrMsg:" + e.getErrMsg());
    System.out.println("RequestId:" + e.getRequestId());
}
调用QueryDeviceDesiredProperty,稽察确立的期许属性值。
DefaultProfile profile = DefaultProfile.getProfile(
        "<RegionId>",          // 地域ID
        "<accessKey>",      /阿里云账号的AccessKey ID
        "<accessSecret>"); 阿里云账号Access Key Secret
IAcsClient client = new DefaultAcsClient(profile);

// 创建API央求并确立参数
QueryDeviceDesiredPropertyRequest request = new QueryDeviceDesiredPropertyRequest();
request.setIotInstanceId("iot-06****");
request.setProductKey("g4r****");
request.setDeviceName("Lamp");
// 待查询的属性identifier列表。如不指定章查询通盘属性(只读属性之外)的期许属性值。
List<String> identifierList = new ArrayList<String>();
identifierList.add("LightStatus");
request.setIdentifiers(identifierList);

// 发起央求并处理嘱咐或终点
try {
    QueryDeviceDesiredPropertyResponse response = client.getAcsResponse(request);
    System.out.println(new Gson().toJson(response));
} catch (ServerException e) {
    e.printStackTrace();
} catch (ClientException e) {
    System.out.println("ErrCode:" + e.getErrCode());
    System.out.println("ErrMsg:" + e.getErrMsg());
    System.out.println("RequestId:" + e.getRequestId());
}

相关若何确立代码中参数,请参见Java SDK使用施展。

在物联网平台云表确立确立期许属性值后,确立运事业态裸露该值。

在线运事业态期许确立端斥地

确立赢得期许属性值,有两种场景:

灯泡再行上线时,主动赢得物联网平台云表缓存的期许属性值。灯泡正处于上线景况,及时秉承物联网平台云表推送的期许属性值。

确立端斥地更多信息,请参见使用确立端SDK接入。

本文提供了完满实在立端Demo示例快播小电影,请参见下文附录:确立端Demo代码。

填入确立文凭、地域和MQTT接入地址的信息。
/**
* 确立文凭信息
*/
private static String productKey = "******";
private static String deviceName = "********";
private static String deviceSecret = "**************";
/**
* MQTT贯穿信息
*/
private static String regionId = "******";

......

/**
* 确立 Mqtt 开动化参数
*/ 
config.channelHost = deviceInfo.productKey + ".iot-as-mqtt." + region + ".aliyuncs.com:1883";
添加以下方法,用于变更本体灯泡的属性,并在属性变更后,主动将信息上报到最新属性值中。
/**
 * 真确确立处理属性变更时,在以下两个场下会被调用:
 * 场景1. 确立联网后主动赢得最新的属性期许值(由确立发起,拉模式)
 * 场景2. 确立在线时秉承到云表property.set推送的属性期许值(由云表发起,推模式)
 * @param identifier  属性符号符
 * @param value       期许属性值
 * @param needReport  是否通过property.post发送景况上报。
 *                    上头场景2的处理函数中已集成属性上报时间,会将needReport确立为false
 * @return
 */
private boolean handlePropertySet(String identifier, ValueWrapper value, boolean needReport) {
    ALog.d(TAG, "真确确立处理属性变更 = [" + identifier + "], value = [" + value + "]");
    // 用户凭据本体情况判性是否确立顺利,这里测试径直复返顺利
    boolean success = true;
    if (needReport) {
        reportProperty(identifier, value);
    }
    return success;
}

private void reportProperty(String identifier, ValueWrapper value){
    if (StringUtils.isEmptyString(identifier)