写点什么

解放重复劳动丨华为云 IoT API Explorer 对接小程序实现系统化应用

发布于: 1 小时前

​​摘要:《物联网平台接口调用实验》详细讲解了 API Explorer 的应用,根据提供的接口,结合真实案例,制作了一个小程序,真正的把它应用起来,解放重复劳动,小程序是一个很好的平台,作为应用侧应用作为快速 App 环境。


本文分享自华为云社区《华为云IoT API Explorer对接小程序实现系统化应用》,作者: 神龙居市 。


《物联网平台接口调用实验》详细讲解了 API Explorer 的应用,根据提供的接口,结合真实案例,制作了一个小程序,真正的把它应用起来,解放重复劳动,小程序是一个很好的平台,作为应用侧应用作为快速 App 环境。

准备资料:


1、华为云账号,并开通 IoTDA 控制台,选择北京四区域,创建好资源空间。

2、小熊派 Bearpi-HM Nano 开发板,和 E53_IA1 扩展版。

3、微信小程序账号,如果没有认证,也可以用开发临时账号运行。

4、小熊派其中一个案例,并导出 Profile 文件。Profile 文件和 API 接口数据字段有差异可以批量替换

工作原理和使用到的 API Explorer 接口。

工作流程和调用接口关系如图:


接口调用封装代码


1、首先是登陆接口,需要在北京四区域开通 IoT 平台的资源空间权限


//请求Token的json数据格式var tokenReq = require('../jsons/reqJson/tokenReq.js');// 认证得到Token//X-Auth-Token//token.project.idexport function authToken(params) {  var data = tokenReq.reqTokenJson;  data.auth.identity.password.user.name = params.iamAccount  data.auth.identity.password.user.password = params.iamPassword  data.auth.identity.password.user.domain.name = params.account  console.log("auth_data", data)  return request({    url: `${global.IAMEndpoint}/v3/auth/tokens`,    method: 'post',    data: data  })}//从token中获得project_id,作为全局数据,以备后用wx.setStorageSync('project_id', res.token.project.id)
复制代码


​2、查找和初始化资源,如果 project_id 对应的指定名称的资源空间是否存在,否则创建资源空间


//检查资源产品let params ={ 'project_id': global.project_id }init(params, res => {global.products = res;wx.navigateTo({        url: '../home/index',    })})export function init(params, func) {  getAppSpace({    "project_id": params.project_id  }).then(res => {    var app_name = global.app_name;    var applications = res.applications;    for (var item of applications) {      if (item.app_name == app_name) {        global.app_id = item.app_id        break;      }    }    if (global.app_id) {      console.log('app_id', global.app_id);      func(true)    } else {      addAppSpace({        'project_id': global.project_id || wx.getStorageSync('project_id')      }).then(res => {        global.app_id = res.app_id        console.log('app_id', global.app_id);        func(true)      })    }  });}
复制代码


​3、添加设备是中选定产品后添加,所以在添加设备的同时,先检查产品是否存在,不存在先创建产品。我这里的产品是通过 Profile 编辑的,说到这里要吐槽一下,通过 IoTDA 平台编辑导出的 Profile 文件和 API Explorer 接口不一致,json 结构是一致的,但是字段名称不一致。对此我也在平台上反应过,已经被采纳,但是还没有实现。IOT的APIExplorer接口CreateProduct参数与Profile不一致_建议反馈_开发者中心-华为云 (huaweicloud.com)


addOrGetDevice: function (func) {    //检查输入    var json = deviceCreate.deviceCreateJson;    json.node_id = this.data.device_name    json.device_name = this.data.device_name    // json.project_id = global.project_id    json.product_id = global.product_id    json.app_id = global.app_id
//产品是否存在 this.checkProduct(this.data.selectedProduct, product => { //检查设备,创建设备 var has = this.data.devices.filter((x) => { return x.device_name == this.data.device_name; }); if (has == false) { var params = { "deviceCreateJson": { "node_id": this.data.device_name, "device_name": this.data.device_name, "product_id": product.product_id, "app_id": product.app_id, "description": "XXXXXX device" }, "project_id": global.project_id } addDevice(params).then(device => { if (device.device_id) { this.setData({ showAddDevice: false }) func({ device_id: device.device_id, secret: device.auth_info.secret }, { ssid: this.data.wifiSSID, pwd: this.data.wifiPwd }) } else { wx.showModal({ title: '创建设备失败', content: `${res.error_msg}`, showCancel: false }) } }) } else { func(null, { ssid: this.data.wifiSSID, pwd: this.data.wifiPwd }) } }) }
复制代码


​4、设备的动态展示,根据产品的 Profile 属性而来。设备属性值不能直接通过设备读取,这里读取的设备影子数据


//影子属性export function getDeviceProperties(params) {  if (!params) params = {}  let project_id = params.project_id || global.project_id || wx.getStorageSync('project_id')  let device_id = params.device_id  return request({    url: `${global.IOTDAEndpoint}/v5/iot/${project_id}/devices/${device_id}/shadow`,    method: 'get'  })}
复制代码


小程序的相关界面







点击关注,第一时间了解华为云新鲜技术~

发布于: 1 小时前阅读数: 4
用户头像

提供全面深入的云计算技术干货 2020.07.14 加入

华为云开发者社区,提供全面深入的云计算前景分析、丰富的技术干货、程序样例,分享华为云前沿资讯动态,方便开发者快速成长与发展,欢迎提问、互动,多方位了解云计算! 传送门:https://bbs.huaweicloud.com/

评论

发布
暂无评论
解放重复劳动丨华为云IoT API Explorer对接小程序实现系统化应用