全部产品
云市场

物模型开发

更新时间:2019-06-25 09:45:26

物模型的开发方式让设备不用关心如何去订阅MQTT topic,而是调用物模型相关的接口来实现属性上报、服务监听、事件上报。

设备属性上报

API原型 device#postProps(params, [callback])
功能描述 上报属性
参数描述
- params 属性参数,Object 类型
- callback
- res 服务端 reply 消息内容

示例代码:

  1. // 上报设备属性
  2. device.postProps({
  3. LightSwitch: 0
  4. }, (res) => {
  5. console.log(res);
  6. });

上面的示例代码用于上报一个名为LightSwitch的属性,其值为0,开发者也可参见完整参考代码

属性设置

调用device.onProps()监听云端下发的属性设置,

API原型 device#onProps(function(cmd))
功能描述 监听来自云端的属性设置
参数描述
- function:收到命令时调用的回调函数
- cmd 服务端下发的命令

下面是收到消息的一个示例(cmd的内容):

  1. {
  2. method: 'thing.service.property.set',
  3. id: '802031359',
  4. params: { LightSwitch: 1 },
  5. version: '1.0.0'
  6. }

下面是对一个灯的开关属性进行设置时的示范处理代码:

  1. // 监听云端设置属性服务消息,示例代码为一个灯
  2. device.onProps((cmd)=>{
  3. console.log('>>>onProps',cmd); //打印完整的属性设置消息
  4. for(var key in cmd.params){
  5. if(key=='LightSwitch'){ //判断是否设置的是LightSwitch属性
  6. console.log('set property ',key);
  7. //示例代码将云端设置的属性在本地进行保存,实际产品开发时需要修改为去将灯打开或者关闭
  8. lightState = cmd.params.LightSwitch;
  9. //本地设置完毕之后,将更新后的状态报告给云端。
  10. //注意:云端下发命令后,云端属性的值并不会改变,云端需要等待来自设备端的属性上报
  11. device.postProps({'LightSwitch': lightState});
  12. }
  13. }
  14. })

监听云端下发的服务调用消息

API原型 device#onService(seviceIdentifier, [callback])
功能描述 监听服务设置
参数描述
- serviceIdentifier 服务ID,string类型
- callback
  1. res 服务端返回参数<br /> reply 响应服务的函数,可以使用同步可以异步方式响应 |

下面是服务调用进行处理的代码示例:

  1. //示例服务是一个加法器,云端服务调用时给出x和y,返回x和y的和
  2. function addFunc(x,y){
  3. let err;
  4. if(x==undefined || y==undefined){
  5. err = 'x or y invail value';
  6. return {err,code:10001} //输入参数错误时的格式封装
  7. }
  8. //注意返回的是一个JSON对象,数据结果封装在data中
  9. return {
  10. data:{
  11. z:x+y //z是服务定义中的输出参数
  12. },
  13. code:200
  14. }
  15. }
  16. // subscribe add_async service,产品上定义了add_async的服务
  17. device.onService('add_async', function (res,reply) {
  18. console.log('add_async called,res:',res);
  19. const { params:{x,y}={}} = res; //获取服务参数
  20. const result = addFunc(x,y); //调用addFunc,在该函数中对数据进行编码
  21. console.log('result',result);
  22. reply(result); //返回处理结果
  23. });

事件上报

API原型 device#postEvent(eventIdentifier, params, [callback])
功能描述 上报事件
参数描述
- eventIdentifier:事件ID,String 类型
- params 事件参数,Object 类型
- callback
- err 错误,比如超时
- res 服务端 reply 消息内容

上报 id 为 eventIdentifier1 的事件示例代码:

  1. device.postEvent('eventIdentifier1', {
  2. //key1是事件'eventIdentifier1的参数'
  3. key1: 'value1'
  4. });

点击此处查看完整代码示例