微信小程序获取Onenet平台的图片

目录

  • 微信小程序获取Onenet平台的图片
  • 1.Onenet平台
  • 2.微信小程序

1.Onenet平台

我做的项目是通过STM32F4开发板,结合ov2640摄像头和Esp6266 WiFi模块拍照上传图片到Onenet平台,再通过微信小程序获取图片显示在手机端。因为已经成功了,所以把经验分享出来,希望以后还有用Onenet的小朋友可以用到。

当初在做这个项目时,因为Onenet平台有了新的版本,用起来特别麻烦,而网上有的资料都是基于旧版本的,所以折腾了很久,最重要的是我没有学过JavaScript,没搞过前端,对于很多语法都不是很了解,也是硬着头皮在用微信开发者工具。

首先是传图片到Onenet平台,这部分很简单,大概就是这样子的,每个图片都有他唯一的index,微信小程序就是通过这个index才能找到对应的图片。

然后需要记住的就是你的设备ID,API地址,API Key,这些在数据流详情都能看到。

还有最最最关键的Master APIkey,在首页产品概况中点击查看,因为每次都需要发送手机验证码才能查看,所以建议把这些Key都放在一个文档中保存起来,会很省事。

2.微信小程序

微信小程序的开发我使用的是微信开发者工具,具体使用方法可以参考微信开发者文档,这里用的是HTTP协议,参考Onenet平台的文档Onenet文档。

首先通过查询数据流的命令:“https://api.heclouds.com/devices/” + deviceid + "/datastreams"获取Onenet的数据,先获取数据流的目的是为了提取图片的index。

因为index不是提前写好的,每次通过STM32上传图片,这个index都会变,所以必须每次都要重新获取一下index的值,接着赋值给一个全局变量app.globalData.picindex,记住这个地方一定要用全局变量,不然不会显示图片。

代码如下:

  getOnenetData:function() {var that = this let deviceid = "913500000"let apikey = "=zz=04k=AasdafaU55ZfghbSs="wx.request({url: "https://api.heclouds.com/devices/" + deviceid + "/datastreams",method: 'GET',data: {picindex:''},header: {"content-type": 'application/x-www-form-urlencoded',"api-key": apikey},success(res) {if (res.statusCode === 200) {/* console.log(res)*/that.setData({picindex: res.data.data[0].current_value.index,})app.globalData.picindex = res.data.data[0].current_value.indexconsole.log(that.data.picindex)console.log(app.globalData.picindex)}},     })},

然后是通过这个api接口获取图片数据:“http://api.heclouds.com/bindata/” + 之前获取到的index。这里有一个非常重要的问题,就是如果仅仅获取图片数据,图片数据都是乱码,没办法显示在手机端,这个问题困扰了我好久,直到我看到这个博客小程序通过HTTP协议获取onenet平台上的图片数据并展示,真的很感谢这位博主,不然我的项目就到这里就结束了,也做不出来。

她告诉我把responseType设置成“arraybuffer”类型,
然后调用const base64=wx.arrayBufferToBase64(res.data),虽然这个api接口已经弃用了,很多库都已经不更新这个接口了,但是依然可以用。

而且这个地方还有一个重要的点,就是apikey必须用之前的Master apikey,我因为这个问题也卡了好久都做不出来,接收不到返回的数据,无语。。。。。

 getOnenetpic: function () {var that = this;let apikey = "gMzlljasldj3V=KTLKxjlaFbIDw8="wx.request({url: "http://api.heclouds.com/bindata/" + app.globalData.picindex,method:"GET",responseType: 'arraybuffer',data: {img: '',},header:{//"content-type": 'application/json',//"content-type": 'application/x-www-form-urlencoded','api-key': apikey},success(res) {if (res.statusCode === 200) {console.log(res)// console.log(that.data.picindex)const base64=wx.arrayBufferToBase64(res.data) //console.log(base64) that.setData({img:"data:image/png;base64,"+base64})console.log(that.data.img)}}})},

这样就把图片数据转换成base64的编码形式展现出来:


在wxml中的代码:

<view><image src="{{img}}" class="p1"></image>
</view>

然后就可以在手机端看到STM32上传Onenet平台的图片了,就这么“简单”。。。。。。

微信小程序获取Onenet图片相关推荐

  1. 微信小程序获取Onenet温湿度数据并控制灯亮灭

    ​ 其实之前就写过类似的文章,但是看过我博客的朋友就知道,我是先写微信小程序获取onenet,然后再写esp32上云到onenet.一篇是ESP32-C3通过MQTT协议把温湿度上传到OneNet平台 ...

  2. 微信小程序获取OneNet数据显示温湿度

    微信小程序获取OneNet数据显示温湿度 一.OneNet平台 ​ 1.我这里的设备是通过MQTT协议连接到OneNet平台的 ​ 2.微信小程序获取OneNet数据需要得到产品的api-key.设备 ...

  3. 微信小程序获取服务器图片[渲染层网络层错误]404

    问题描述 小程序获取服务器图片的时候报了这个错误 检查了以下,地址没错,图片也可以显示出来,但调试器那里就是报错.重新捋了一遍发现了问题. 原因分析: 这是小程序加载的问题,程序运行加载到以下标签的时 ...

  4. 微信小程序获取文件图片的MD5

    问题: 上传同一张图片 解决办法:获取图片MD5值来对比 如何使用? 1.对应页面引入对应的spark-md5.js //引入js const sMD5 = require('../../utils/ ...

  5. 小程序提交表单mysql_GitHub - kun19911227/minipro: 微信小程序提交带图片的表单

    minipro 微信小程序提交带图片的表单 目录说明 upload_images ├── pages │ ├── upload_info 提交表单 │ └── display_info 信息展示 ├─ ...

  6. 微信小程序中的图片处理

    微信小程序中的图片处理 微信小程序中的<image></image>用于向页面中插入图片.有两个重要的属性 1.src  要插入图片的资源地址 2.mode   图片裁剪.缩放 ...

  7. 微信小程序获取头像地址

    微信小程序获取头像地址 获取用户信息开发接口 wx.getUserInfo 接口参数说明: 微信文档地址: 获取用户信息开发接口 wx.getUserInfo 下面展示一些 内联代码片. // 必须是 ...

  8. 微信小程序获取二维码接口整理,.Net Core后台获取小程序二维码

    2019独角兽企业重金招聘Python工程师标准>>> 一.关于二维码接口说明 参考:https://my.oschina.net/tianma3798/blog/1811307 获 ...

  9. php展示微信图片尺寸,微信小程序实现image图片自适应宽度

    本文主要和大家分享微信小程序实现image图片自适应宽度,希望能帮助到大家,首先我们先来了解一下image组件. 一.了解image组件 由于image有默认的固定的宽度和高度,这样我们在做图片自适应 ...

最新文章

  1. 南海有macbook吗?
  2. 新手入门深度学习 | 目录
  3. vba单元格批量赋值_Excel●VBA●如何把批注中的信息批量提取到单元格?
  4. SQL2005 BI系列课程
  5. java.lang.OutOfMemoryError: Java heap space错误及处理办法(收集整理、转)
  6. (1) 漂亮的日期控件
  7. 华为交换机在Telnet登录下自动显示接口信息
  8. 玩转springboot2.x之异步调用@Async
  9. Android SDK Permission大全访问权限
  10. 【51单片机】STC-ISP软件保姆级烧录教程(以普中A2开发板为例)
  11. jQuery WeUI学习笔记一
  12. Flash XSS 漏洞实例
  13. 浅谈什么是大数据?大数据可以做什么?
  14. 想不到吧,实体类能自己CRUD,MyBatis-Plus AR模式了解下
  15. 平分七筐鱼c语言y,平分七筐鱼 - 寂寞暴走伤的个人空间 - OSCHINA - 中文开源技术交流社区...
  16. 虚拟电脑服务器玩梦幻西游卡吗,vmware虚拟机 玩梦幻西游很卡有什么解决方法...
  17. Linux里面的基本指令
  18. 2013,手游迎首轮大洗牌,小团队如何存活
  19. map的valu增加算法
  20. (ssl1232)雷达覆盖(normal)

热门文章

  1. php中分页公式,php分页函数完整实例代码
  2. 微信小程序nodejs+vue校园快递代拿系统uniapp校园互助系统
  3. Java实现多线程的几种方式
  4. DMA测试(Direct Register Mode)(PS + PL)
  5. Delaunay三角网之分治算法
  6. 什么是通达信服务接口?
  7. 美国诚实签经验——我准备了家庭预算表 和 保险,麻烦您看下,谢谢
  8. STM32单片机可充电自动声控夜灯自动手动模式
  9. 接收支付宝的POST异步通知(回调)
  10. 图片加载失败或默认图片