NB-IOT专栏(QS-100模块二次开发)-onenet云平台+微信小程序实现下行数据控制设备开关

前言

最近公司老总买了NB-IOT的模块,老总考虑到STM32芯片的价格涨的很快,而我们的内容做的不是很复杂,再加上支持一下本地企业,QS-100模块到价格超级实惠,决定使用QS-100模块作为通信模块,主要是做上位机控制设备开关的功能吧。QS-100购买链接如下:t淘宝购买直通车,支持一波!

1.设计方案

为实现用户远程控制设备开关,采用onenet云平台作为中转平台,QS-100模块作为通信和MCU,微信小程序作为上位机,实现一个简单到NB-IOT物联网Demo。当用户在小程序上点击button时,设备执行开关操作。

2. 环境准备

  • VS code
  • cygwim
  • gcc
  • Logview程序下载工具
  • 串口调试助手,如sscom、MobaXter等

3.实现过程

3.1 QS-100接入OneNet平台

1.在onenet创建一个NB-IOT的设备,接入协议使用LWM2M协议接入,我也是第一次使用这个云平台,所以我选择使用旧版哈哈哈哈,方便在网上百度。
操作流程:进入NB-IOT物联网套件->添加产品->(自己写,网络运营可以选择移动,操作系统选择Linux)->添加设备,设备的IMEI、IMSI号码均可以通过AT指令获取。这里QS-100与OneNet云平台的连接就是通过这两个号码连接的,每个设备有自己的IMEI号码,建立连接就是依靠的这个吧(我理解的)。

//获取IMEI
AT+CGSN=1
//获取IMSI
AT+CIMI

2.准备2.0正常版本的SDK
卖家有提供,在USERAPP目录下,inc目录存放.h头文件,src 目录存放.c文件,examples目录存放厂商给的demo文件,这里连接onenet云平台,使用xy_cloud_demo/onenet/cis_opencu_demo.c文件,当然也可以提前使用simpe_demo.c文件先做一下测试。
使用SDK进行连接,打开这个工程后在src下新建一个onenet.c文件吧,并把cis_openmcu_demo.c文件的内容复制放到onenet.c并把宏定义打开,再模仿一下其他点.c文件把cis_task_init()函数放到命令行中,串口打印应该用zos_printf(),而不是xy_printf(),所以这里要在这改下。
烧录成功后,在串口调试助手中输入help查看所有命令,输入对应到命令即可。如果连接云平台成功,onenet的云端会显示在线。如果没成功到话就得思考一下了,如果模块内的imei号码丢失,肯定是连接不上的,使用AT+CGSN=1查询一下是否还存在。
在这里插入图片描述
点击详情,找到设备资源列表,看到属性值这里有数据了,没错,这就是设备传过来到数据,具体怎么传过来到可以看opencpu_send_data()函数,要想发送数据给设备(下行),点击写即可,这里要注意属性到类型,Colour的属性是String类型,所以在这最好啦。
在这里插入图片描述
观察onenet.c中到接收下行数据处理函数cis_demo_downstream_cb的参数可以知道,value就是从云端下发的消息的值。
在这里插入图片描述
打印value、Valenlen等,因为这里的value是字符指针,也就是字符数组的首地址,所以就这样打印吧!

	zos_printf("%s\r\n",value);
	zos_printf("云平台下发请求数据长度%d\r\n",valueLen);

出了使用onenet云端直接下发命令,也可以通过onenet提供的API接口下发命令,API接口文档如下:
OneNetAPI,可知,需要知道这这个ID号。
在这里插入图片描述
不知道ID号没有关系,可以在程序里面去看看,还是在那个函数里面,参数URI后面又赋值给了msg结构体,如下。所以这几个参数我们可以在这获取呀,直接zos_printf()打印就完事了。
在这里插入图片描述

   // zos_printf("msg->objId:%d\r\n",msg->objId);
	//zos_printf("msg->insId:%d\r\n",msg->insId);
	//zos_printf("msg->resId:%d\r\n",msg->resId);

打印之后可以知道,分别是3311、0、0。那好,可以做个判断,是这的时候再执行设备开关操作才好,当然这个GPIO的初始化我放到了main函数中,一定要进行初始化!否则这个灯点不亮的!zos_pin_mode(13,PIN_MODE_OUTPUT);


     if(msg->objId==3311&&msg->insId==0&&msg->resId==0)
	 {
		 zos_printf("control\r\n");
        char onStr[] = "0";
		char offStr[] = "1";
         if(strcmp(value,onStr)==0){
			zos_printf("on\r\n");
		    zos_pin_write(13, PIN_LOW);//开
		 }else if(strcmp(value,offStr)==0){
		    zos_printf("off\r\n");
			zos_pin_write(13, PIN_HIGH);//关
		 }else{
			 zos_printf("print error!\r\n");
		 }
	 }

3.2 接口测试

可以使用Postman接口测试工具进行测试,下行命令发起POST请求测试结果如下。
在这里插入图片描述
串口接收到数据;

在这里插入图片描述
请求参数和请求头贴上去!

在这里插入图片描述
在这里插入图片描述
好啦,这就OK啦,当然也可以查看设备的信息一类的信息,在API文档里面仔细阅读即可。,发起GET请求查看设备示例如下:
在这里插入图片描述

3.3 微信小程序开发demo

使用微信小程序作为上位机也是比较不错滴!只要会WEB开发就比较好上手,毕竟基于Vue.js的嘛。好,简单到demo设计如下,先搭建出来一个框框!其实也就是对oneNet的api的运用罢了!这一点不得不说比阿里云IOT要方便不少,我还不知道阿里云IOT有没有API这个功能接口哈!不喜勿喷。
关于小程序的账号注册、新建工程、界面就不再多说!
1.设置合法域名。
微信小程序的开发并不是所有的API接口都能用的,必须是https的域名才可以使用哈!
在微信小程序的后台,开发->开发管理->开发设置中添加合法域名
在这里插入图片描述
如果你不想添加合法域名,只是为了测试,也可以在调试的时候选择不校验合法域名,当然这样你发布的时候域名请求不到而已!
在这里插入图片描述
2.界面书写
当然这只是一个demo,样子写到比较简单,只有几个button。

<button class="weui-btn" type="primary" bindtap="openFunction"></button>
<button class="weui-btn" type="primary" bindtap="closeFunction"></button>
<button class="weui-btn" type="primary" bindtap="Looksingle">查看单个设备</button>

在这里插入图片描述

我这里有用到了weui开发组件,如果你的界面和我的界面不一样没关系,请不要沮丧,在app.json中添加字段即可,和windows并列。

  "useExtendedLib": {
    "weui": true
  },

3.请求接口的JS写法
代码如下,其实就是对API接口的运用罢了,小程序的生命周期以及数据绑定等等的,根据业务需求自己了解哈。

Page({

  data: {

  },

  //打开函数
  openFunction(){
    console.log("开");
    //全部参数
    this.sendMessage("0");
  },
  //关闭函数
  closeFunction(){
    console.log("关");
    this.sendMessage("1");
  },
  //查看单个设备处理函数
  Looksingle(){
    //参数
     let deviceId = "754221911"
     let apiKey= "xxxxxxx=";// 写你到apiKey
     let headers = {
       "api-key":apiKey,
       "Host":"api.heclouds.com"
     }
      //拼接URL地址
      let GetUrl = "https://api.heclouds.com/devices/"+deviceId;
     wx.request({
       url: GetUrl,
       method:"GET",
       header:headers,
       success(res){
        console.log(res)
         console.log("查看单个设备",res.data)
       },fail(ret){
         console.log(ret)
       }
     })
  },
  //发送函数
 sendMessage(message){
   let apiKey= "xxxxxxx=";// 写你到apiKey
  let imei = xxxxx;//写你的imei
  let obj_id =3311;
  let obj_inst_id = 0;
  let res_id = 0;
  //发起Post请求
  let header={
    "api-key":apiKey,
    "Host":"api.heclouds.com",
    "Content-Type":"application/json",
  }
  //拼接URL请求地址
  let postUrl = url + "?imei="+imei+"&obj_id="+obj_id+"&obj_inst_id="+obj_inst_id+"&res_id="+res_id;
  wx.request({
    url: postUrl,
    method:"POST",
    data:{
      "args": message
    },
    header:header,
    success(res){
       console.log(res.data)
    },fail(ret){
      console.log(ret)
    }
  })
 }
})


4 感悟与总结

onenet的API接口有点好用,只需要一些参数发起API请求即可。

5 有问题欢迎联系交流,包毕设!

  • 4
    点赞
  • 41
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
### 回答1: 使用OneNET云平台提供的API可以实现用于接收NB-IoT反馈信息的微信小程序的代设计。首先,要利用OneNET的API来设置NB-IoT设备的相关参数,确保它能正常工作。其次,利用OneNET的API建立一个与NB-IoT设备的连接,以便可以接收其发送的信息。最后,利用微信小程序开发工具编写代实现接收NB-IoT反馈信息的功能。 ### 回答2: 要使用OneNET云平台提供的API来实现微信小程序的代,帮助实现接收NB-IoT反馈信息的过程,可以按照以下步骤进行: 1. 首先,在OneNET平台上创建一个设备,并获取设备设备ID和API Key。 2. 在微信小程序的代中,引入OneNET平台提供的API库,并初始化API库。 3. 在小程序代中编写一个用于接收NB-IoT反馈信息的函数。可以使用微信小程序提供的WebSocket API来建立与OneNET平台的连接。 4. 在该函数中,使用OneNET平台提供的API中的设备数据推送接口,将接收到的NB-IoT反馈信息传递给OneNET平台。 5. 将该函数与微信小程序的相关事件进行绑定,如启动程序时自动执行、点击某个按钮时执行等。 6. 在小程序界面上,可以显示接收到的NB-IoT反馈信息,以及其他相关信息。 需要注意的是,以上步骤仅为一个大致的实现流程,具体的代编写需要根据实际需求进行调整和完善。此外,还需要合理调用OneNET平台提供的API,确保设备信息的传输安全和正确性。 ### 回答3: 要实现接收NB-IoT反馈信息的过程,可以借助OneNET云平台提供的API来实现。首先,在微信小程序中需要调用OneNET云平台的API来获取NB-IoT设备的反馈信息。 首先,在微信小程序的代中,需要使用微信小程序的请求API来发送HTTP请求给OneNET云平台。请求的URL应该是OneNET云平台提供的API接口,具体可以参考OneNET的API文档。 在请求中,需要提供OneNET云平台设备Key以及需要获取反馈信息的设备的ID信息。同时在请求头中,还需要设置正确的Content-Type来指定传输的数据是JSON格式。 请求发送后,OneNET云平台会根据设备ID和设备Key来验证请求的合法性,并将相应反馈信息作为JSON格式返回。 在微信小程序中,可以通过注册相应的回调函数来处理OneNET云平台返回的反馈信息。在回调函数中,可以解析返回的JSON格式数据,并根据需要进行相应的处理操作,例如展示反馈信息或者进行其他逻辑操作。 此外,为了保证数据的安全性,可以在发送请求时使用HTTPS协议来进行数据传输,以防止数据被篡改或者泄露。 总之,通过使用OneNET云平台提供的API来实现微信小程序的代,可以方便地获取NB-IoT设备的反馈信息,并根据需要进行相应的处理操作。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

姜大大的博客

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值