NodeJS SDK物模型开发

这一篇接着上一篇继续根据阿里云提供的物模型开发文档往下讲。

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

1、首先需要在物联网平台设置一个功能为服务的自定义功能
在这里插入图片描述
服务的调用方式分为两种:同步和异步
同步指的是服务为同步调用时,云端会等待设备回复5秒;若设备没有回复,则调用超时。
异步指的是服务为异步调用时,云端执行调用后直接返回结果,不会等待设备的回复消息。

2、接下来是对云端服务的调用,我们使用的是python SDK来开发云端,使用的是调用设备服务的API:InvokeThingService,然后再github中找到相关代码并进行改写。

#!/usr/bin/env python
#coding=utf-8

from aliyunsdkcore.client import AcsClient
from aliyunsdkcore.acs_exception.exceptions import ClientException
from aliyunsdkcore.acs_exception.exceptions import ServerException
from aliyunsdkiot.request.v20180120.InvokeThingServiceRequest import InvokeThingServiceRequest

client = AcsClient('************', '************', 'cn-shanghai')

request = InvokeThingServiceRequest()
request.set_accept_format('json')

request.set_Args({'num_a':1,'num_b':2})  // 设置服务的输入参数
request.set_Identifier("add_async")  // 设置调用服务的标识符
# request.set_IotId("IotId")
request.set_DeviceName("testdevice2")
request.set_ProductKey("a1qfDPbUCyE")

response = client.do_action_with_exception(request)
# python2:  print(response) 
print(response)

3、最后是对设备端的开发,使用的是Nodejs SDK

const iot = require('alibabacloud-iot-device-sdk');

// init device and connect linkplatform 初始化设备,并与物联网平台进行连接
const device = iot.device({
  "ProductKey": "************",
  "DeviceName": "************2",
  "DeviceSecret": "************"
});
//示例服务是一个加法器,云端服务调用时给出x和y,返回x和y的和
function addFunc(x,y){
  let err;
  if(x==undefined || y==undefined){
    err = 'x or y invail value';
    return {err,code:10001} //输入参数错误时的格式封装
  }
  //注意返回的是一个JSON对象,数据结果封装在data中
  return {
    data:{
      z:x+y  //z是服务定义中的输出参数
    },
    code:200
  }
}
// subscribe add_async service,产品上定义了add_async的服务
// res是服务端返回的参数,reply响应服务的函数可以使用同步或异步的方式
// onservice监听服务端下发服务调用的消息
device.onService('add_async', function (res,reply) {
  console.log('add_async called,res:',res);
  const { params:{num_a,num_b}={}} = res; //获取服务参数,获取res对象中params中的num_a,num_b的值,num_a,num_b必须与平台设置的服务参数的标识符一致
  console.log(num_a,num_b);
  const result = addFunc(num_a,num_b); //调用addFunc,在该函数中对数据进行编码
  console.log('result',result);
  reply(result); //返回处理结果
});

res:在这里插入图片描述
在这里插入图片描述
当设置为同步调用模式是服务调用总是不成功,但是设置为异步就能够成功,还不知道原因,希望有大神可以解答。

事件上报

1、首先在物联网平台定义事件物模型
在这里插入图片描述
在这里插入图片描述

2、在设备端进行设备接入,并编写上报事件postevent代码

const iot = require('alibabacloud-iot-device-sdk');

const device = iot.device({
  "ProductKey": "************",
  "DeviceName": "************",
  "DeviceSecret": "************"
});
 
device.on('connect', () => {
  console.log('>>>>>connect');
  device.postEvent("Alarmevent", {
    alarmtype: 2,
  }, (res) => {
    console.log(`postEvent:`,res);
  })
});

在这里插入图片描述
在这里插入图片描述

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
Hyperledger Fabric是一个基于区块链技术的开源平台,用于构建企业级的去中心化应用程序。Hyperledger Fabric Node.js SDK是Hyperledger Fabric的官方软件开发工具包,用于在Node.js环境下开发和部署Fabric网络。 Hyperledger Fabric Node.js SDK开发流程如下: 1. 准备环境:首先需要安装Node.js和npm包管理器。可以从官方网站上下载并安装最新的Node.js版本。然后使用npm安装Hyperledger Fabric Node.js SDK。 2. 创建项目:在开发过程中,创建一个新的Node.js项目是一个好习惯。使用命令行工具或IDE创建一个新的文件夹,并在其中初始化一个新的Node.js项目。运行"npm init"命令,按照提示填写项目的基本信息。 3. 安装依赖:使用npm安装Hyperledger Fabric Node.js SDK以及其他依赖库。在项目的根目录下运行"npm install fabric-network fabric-ca-client"命令。 4. 配置文件:在项目中创建一个配置文件,用于指定Fabric网络的连接信息和身份认证信息。配置文件中包括Fabric网络的URL、通道名称、智能合约的名称等。 5. 连接网络:使用SDK的API连接到Fabric网络。使用配置文件中的连接信息创建一个新的Gateway对象,并调用connect()方法连接到指定的Fabric网络。 6. 身份认证:在连接到Fabric网络后,需要使用身份认证信息来访问链码(智能合约)。使用SDK的API提供的身份认证机制,来设置当前用户的身份认证信息。 7. 调用链码:一旦连接和身份认证都完成,就可以使用SDK的API调用链码的方法。通过调用链码的函数,可以查询或更新区块链上的数据。 8. 断开连接:在使用完SDK后,需要调用disconnect()方法断开与Fabric网络的连接,释放资源。 总结起来,Hyperledger Fabric Node.js SDK开发流程包括准备环境、创建项目、安装依赖、配置文件、连接网络、身份认证、调用链码和断开连接。开发人员可以使用SDK的API来完成Fabric网络的各项操作,从而实现企业级的区块链应用程序。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值