解放重复劳动丨华为云IoT API Explorer对接小程序实现系统化应用
摘要:《物联网平台接口调用实验》详细讲解了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.id
export 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'
})
}
小程序的相关界面





解放重复劳动丨华为云IoT API Explorer对接小程序实现系统化应用的更多相关文章
- 华为云MVP熊保松谈物联网开发:华为云IoT是首选,小熊派是神器
摘要:在AI.5G的技术驱动下,物联网行业的发展愈加如火如荼,开发者在技术的快速更迭间,也得乘风破浪跟上新技术的节奏. 在AI.5G的技术驱动下,物联网行业的发展愈加如火如荼,开发者在技术的快速更迭间 ...
- 直击Huawei Mate 40产线背后的华为云IoT智能制造
摘要:数字孪生?在数字世界找到物理世界的设备! 本文分享自华为云社区<[云驻共创]Huawei Mate 40产线直击之华为云IoT智能制造助力工厂数字化转型>,原文作者:启明. Part ...
- 基于华为云IoT Studio自助生成10万行代码的奥秘
华为IoT小助手们搬好板凳.备好笔记本.听了HDC.Cloud的几场华为云技术架构师的直播讲课,感觉获益匪浅却又似懂非懂,直后悔自己没有好好打下基础.为了避免再次出现这样的情况,小助手偷偷跑去找了华为 ...
- 聊聊如何在华为云IoT平台进行产品开发
摘要:华为云物联网平台承载着南北向数据互通的功能职责. 本文分享自华为云社区<如何基于华为云IoT物联网平台进行产品开发>,作者: Super.雯 . 华为云物联网平台承载着南北向数据互通 ...
- 基于STM32+华为云IOT设计智能称重系统
摘要:选择部署多个重量传感器和必要的算法.通过WiFi 通信模块.GPS定位模块,采集车辆称重数据一地理位置信息,并通过网络发送至云平台,设计图形化UI界面展示称重.地图位置等重要信息,实现对称重系统 ...
- CC2530_ZigBee+华为云IOT:设计一套属于自己的冷链采集系统
摘要:以CC2530单片机为核心器件,设计一个冷链环境信息采集系统,利用传感器技术对冷藏仓内的环境参数进行采集,上传到华为云物联网云平台,然后通过手机端或移动端进行显示,便于分析,观察冷链环境信息. ...
- 基于华为云IOT及无线RFID技术的智慧仓储解决方案最佳实践系列一
[摘要]仓储管理存在四大细分场景:出入库管理.盘点.分拣和货物跟踪.本系列将介绍利用华为云IOT全栈云服务,端侧采用华为收发分离式RFID解决方案,打造端到端到IOT智慧仓储解决方案的最佳实践. 仓储 ...
- OpenHarmony3.0如何轻松连接华为云IoT设备接入平台?
摘要:本文主要介绍基于OpenHarmony 3.0版本来对接华为云IoT设备接入IoTDA,以小熊派BearPi-HM_Nano开发板为例,使用huaweicloud_iot_link SDK对接华 ...
- 重磅!华为云社区·CSDN【寻找黑马程序员】有奖征文活动奖项公布!!
华为云社区·CSDN[寻找黑马程序员]第一期有奖征文活动在大家的鼎力支持下顺利落幕啦,非常感谢大家一直以来的支持~现在小宅就要隆重公布本次活动的奖项了!! 请各位获奖的伙伴在8月18日前私信联系提供联 ...
- 利用WordPress REST API 开发微信小程序从入门到放弃
自从我发布并开源WordPress版微信小程序以来,很多WordPress网站的站长问有关程序开发的问题,其实在文章:<用微信小程序连接WordPress网站>讲述过一些基本的要点,不过仍 ...
随机推荐
- 基于Echart的前端可视化
GitHub 上有许多关于低代码自助可视化的项目,前端使用 Vue 和 ECharts 的示例.以下是一些可能符合你要求的项目: DataV: 项目链接:DataV 描述:DataV 是一款基于 Vu ...
- 如何在linux系统中安装python3.8.1 并卸载 python3.6.2 更新python3引导到3.8.1
安装python3.8.1 步骤 1:检查Python版本 在终端中输入以下命令来检查当前安装的Python版本: python --version 步骤 2:安装编译Python所需的依赖项 更新系 ...
- IIS和PHP相关权限问题及解决方案_500错误_500.19 - Internal Server Error与401未授权错误_401.3 - Unauthorized
在IIS添加网站(假设站点为xxx.yyy.com,本例假设IIS版本为7.5或以上),如果采用IIS默认配置,会在创建站点同时创建相应同名的"应用程序池"(也是xxx.yyy.c ...
- 龙芯发布 .NET 8 SDK 8.0.100-rc2 LoongArch64
随着.NET 8的发布的临近,国内的社区朋友们也很关心龙芯.NET 团队对于Loongarch .NET 8的发布时间,目前从龙芯.NET编译器团队的可靠信息,Loongarch .NET 8的发布会 ...
- React 应用构建(环境)
可以少去理解一些不必要的概念,而多去思考为什么会有这样的东西,它解决了什么问题,或者它的运行机制是什么? 一. 环境搭建 工作编辑器:Visual Studio Code. Javascript 解析 ...
- Streamlit 快速构建交互式页面的python库
基础介绍 streamlit 是什么 Streamlit是一个面向机器学习和数据科学团队的开源应用程序框架,通过它可以用python代码方便快捷的构建交互式前端页面.streamlit特别适合结合大模 ...
- 在路上---学习篇(一)Python 数据结构和算法 (5)二分查找、二叉树遍历
独白: 利用算法进行查找指定元素,最近学习二分查找和二叉树遍历.二分查找前提是在有序中进行查找,二叉树引入了树的概念.树的概念其中有许多小知识点,也是一种新的数据结构.还是之前的感悟,需了解其本质才会 ...
- 飞码LowCode前端技术之画布的设计
简介 本章节从精准定位.分层设计.异步组件.拖拽四个方面分析飞码画布设计. 一.精准定位设计 飞码画布是一个套件,可对外提供画布能力.精准定位有两种情况,一是目标组件无子组件,而是目标组件有子组件. ...
- 洛谷5789 [TJOI2017]可乐(矩阵快速幂,Floyd思想)
题意:可乐机器人有三种行为: 停在原地,去下一个相邻的城市,自爆.它每一秒都会随机触发一种行为.现在给加里敦星球城市图,在第 0秒时可乐机器人在 1号城市,问经过了 t秒,可乐机器人的行为方案数是多少 ...
- C++ 邮件槽ShellCode跨进程传输
在计算机安全领域,进程间通信(IPC)一直是一个备受关注的话题.在本文中,我们将探讨如何使用Windows邮件槽(Mailslot)实现ShellCode的跨进程传输.邮件槽提供了一种简单而有效的单向 ...