设备可以使用物模型功能,实现属性上报(如上报设备状态)、事件上报(上报设备异常或错误)和服务调用(通过云端调用设备提供的服务)。
设备属性
1.属性上报
Map<String, ValueWrapper> propertyValueMap = new HashMap<>();propertyValueMap.put("testp", new ValueWrapper.StringValueWrapper("test"));//IPublishResourceListener为属性上报的回调函数,如不需要可以设置成nulldevice.postProperty(propertyValueMap, new IPublishResourceListener() {@Overridepublic void onSuccess(String s, Object o) {//属性上报成功的回调}@Overridepublic void onError(String s, AError aError) {//属性上报失败的回调}});
2.获取属性
//批量获取指定属性Map<String, ValueWrapper> properties = device.getProperties(Arrays.asList("language"));//获取全部属性Map<String, ValueWrapper> properties = device.getProperties();
设备事件
Event event = new Event();event.setName("notify");Map<String, ValueWrapper> params = new HashMap<>();params.put("param", new ValueWrapper.StringValueWrapper("ok"));event.setParams(params);//IPublishResourceListener为事件上报的回调函数,如不需要可以设置成nulldevice.postEvent(event, new IPublishResourceListener() {@Overridepublic void onSuccess(String s, Object o) {}@Overridepublic void onError(String s, AError aError) {}});
设备方法
//methodName:物模型中方法的identifierdevice.registerAsyncMethod("asyncPushMessage",new ITResRequestHandler() {@Overridepublic void onProcess(String s, Object request, ITResResponseCallback itResResponseCallback) {Map<String, ValueWrapper> data = (Map<String, ValueWrapper>) ((InputParams) request).getData();//设备处理请求//根据物模型返回处理后的结果OutputParams outputParams = new OutputParams();outputParams.put("result", new ValueWrapper.StringValueWrapper("ok"));itResResponseCallback.onComplete("asyncPushMessage",null, outputParams);//发送错误时返回AError error = new AError();error.setCode(100);error.setMsg("asyncPushMessage failed.");itResResponseCallback.onComplete("asyncPushMessage", new ErrorInfo(error), null);}@Overridepublic void onSuccess(Object o, OutputParams outputParams) {//方法注册成功的回调}@Overridepublic void onFail(Object o, ErrorInfo errorInfo) {//方法注册失败的回调}});
