前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【IoT迷你赛】物联网数据采集及Grafana数据可视化

【IoT迷你赛】物联网数据采集及Grafana数据可视化

原创
作者头像
用户2596723
修改2019-08-23 09:54:05
1.8K0
修改2019-08-23 09:54:05
举报
文章被收录于专栏:腾讯云IoT

物联网行业的应用场景虽然千差万别,但是解决的问题其实是类似的,都可以用 前端硬件<=>数据中台<=>应用 来做简单概括。腾讯云的物联网开发套件,等同于提供了前端硬件及数据中台两部分功能,并为应用开发提供了API及SDK,来加速整个开发链路。因此拿到腾讯的物联网开发套件之后,就想评估一下这样一套方案,能够在多大程度上改进实际的开发流程。

背景

因为链路中的两块已经完成,为了尽快打通应用场景,就需要再搭配上一个可面向用户的前端展示工具。由于物联网采集数据是一个标准的时序数据(时间戳 - 数值),搭配Grafana就是个很好的选择。开始动工前预览了腾讯iot的API文档(https://cloud.tencent.com/document/product/634/12056),确定了基本满足需求,就可以开始动工了。

操作步骤

1. 硬件组装及调试

开发套件提供了一份基础的入门文档,拿到手之后把开发板、ESP8266、烟雾探测传感器组装之后,就可以开始进行简易的开发。提供的代码示例里,包括了如何通过ESP8266 连接上平台,如何用ADC读取配套传感器的数值。把两个案例糅合之后,此时已可以在串口中打印出烟雾传感器的数值。

2. 上传平台

这一步在平台中依次按照流程指引,创建测试产品、添加一个自定烟雾值字段,将产品的productId 跟 secretkey加入到配置文件中,就可以看到数据开始源源不断的上传到平台上了。

如果平台中始终不出现数据

- 首先检查串口中是否能打印出数据

- 串口能打印数据后,检查ESP8266是否已连上网。在实际使用过程中,发现使用华硕路由器的访客网络始终无法连上网,反而是有白名单限制的内网,可以连上wifi。如果不确定是否是网络的问题,可以先用手机开热点,来排除网络设置的影响。

- 确定可联网之后,检查产品的productID, secketKey, deviceName 这三个值是否填入到正确的位置 (这部分在使用说明中的描述跟实际代码实现有些许出入,直接在对应的文件中把所有相关的关键词都替换了,能保证万无一失)

3. 获取数据并连接Grafana

相关链接:

首先在本地安装grafana + simple json 插件,这样就可以直接通过标准的REST API, 给grafana提供后台可视化数据。然而,因为腾讯云IOT的鉴权不是标准的鉴权插件,返回的数据格式也跟grafana需要的有所不同,那么就需要一个proxy server,把鉴权及数据格式做简单的转换。不过还好,腾讯云IOT很贴心的提供了各个编程语言的SDK,及示例代码生成,这让开发一下就加速了很多。

代码语言:javascript
复制
  // 从grafana的请求中,获取数据查询的起始timestamp、结束时间timestamp
  if (req.body.scopedVars) {
    var from = req.body.scopedVars.__from.text;
    var to = req.body.scopedVars.__to.text;

  }   
代码语言:javascript
复制
    // 把起始时间、结束时间传入到参数中
    let params = '{"MinTime":1548677099000,"MaxTime":1948677099000,"ProductId":"xxx","DeviceName":"dev001","FieldName":"smoke"}'
    req.from_json_string(params);
    if(from && to) {
        req.MinTime = from;
        req.MaxTime = to;
        console.log(req);
    }
代码语言:javascript
复制
// 把api返回的结果转换成grafana接受的
function format_result(response){
    timeserie = response['Results']
    result = []

    _.each(timeserie, function(ts) {
        result.push([ts['Value'], ts['Time']]);
    });
    result = {
        "target": response['FieldName'], 
        "datapoints": result,
    }
    return result;
}

基本上核心的代码就这三段,三段改完之后,腾讯云就可以源源不断的给grafana喂数据了。

在整个前端硬件<=>数据中台<=>应用 的链路中,非常耗费精力的一块,就是数据的稳定采集及上传。有腾讯云iot平台的存在,等同于提供了一个稳定的数据中台,不需要去考虑负载均衡、数据备份、数据库运维,API实现等各类问题,直接就可以专心构建面向用户的应用。这整个后台的数据开发,耗时两个小时左右,可以说,对于大部分的物联网应用对接来说,都足够了,相当省事。

改进建议

以一个互联网行业,软件从业人员(硬件爱好者水平)的眼光来看,整体的体验上,软件部分的开发是优于硬件的。整个硬件套件提供的使用说明,只进行到了如何搭建helloworld,能让环境跑起来。但是对于其他的变种,提供的案例就相对不足(跟Ardunio这类硬件套装比起来,笔者想要把ardunio上的应用案例迁移过来,然而因为缺少了相应的示例代码,改动起来非常的艰难,最终放弃了尝试)。当然对于专业的硬件开发人员来说,这应该不是问题。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 背景
  • 操作步骤
    • 1. 硬件组装及调试
    • 2. 上传平台
      • 3. 获取数据并连接Grafana
        • 改进建议
        相关产品与服务
        物联网
        腾讯连连是腾讯云物联网全新商业品牌,它涵盖一站式物联网平台 IoT Explorer,连连官方微信小程序和配套的小程序 SDK、插件和开源 App,并整合腾讯云内优势产品能力,如大数据、音视频、AI等。同时,它打通腾讯系 C 端内容资源,如QQ音乐、微信支付、微保、微众银行、医疗健康等生态应用入口。提供覆盖“云-管-边-端”的物联网基础设施,面向“消费物联”和 “产业物联”两大赛道提供全方位的物联网产品和解决方案,助力企业高效实现数字化转型。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档