物联网平台提供确立期许属性值功能快播小电影,通过缓存确立属性的期许值,末端从物联网平台云表完结确立属性值。本文先容确立期许属性值,末端从物联网平台完结灯泡景况的关连操作。
家具创建顺利后,单击赶赴界说物模子,为家具添加物模子并发布,请参见单个添加物模子。在左侧导航栏,聘用确立管理 > 确立,单击添加确立,在灯泡家具下添加确立: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)