NVIDIA 初创加速计划,免费加速您的创业启动 了解详情
写点什么

鹅厂分布式大气监测系统:架构介绍及案例解析

  • 2020-05-24
  • 本文字数:3144 字

    阅读完需:约 10 分钟

鹅厂分布式大气监测系统:架构介绍及案例解析

引言

为了跟踪小区级的微环境质量,腾讯内部发起了一个实验性项目:细粒度的分布式大气监测


我们希望基于腾讯完善的产品与技术能力,与志愿者们共同建设一套用于监测生活环境大气的系统,监测终端就分布在志愿者的身边,所以这个系统的数据,更贴近每个人的生活空间,以及提供更细粒度的数据监测能力。


上一期我们分享了分布式大气监测系统的组成和追踪分析,本篇文章将延续之前文章的脉络,从系统架构的角度来介绍目前正在构建的大气监测系统,并逐个模块介绍其设计思路和要点。

设计要求

1. 低使用门槛


这套系统将要吸引志愿者一起共建大气监测点,所以必须保证在端侧及平台操作上都应该尽可能简单。


2. 低开发成本


大气监测是一个典型的端云配合的物联网场景。我们了解到腾讯云已经有了一整套的物联网产品。为了让我们这个兼职部队,在业余时间能快速地构建一个高可靠的业务系统,我们会尽可能地使用腾讯云的物联网产品及其他云产品,用以加速这套业务系统开发。


3. 更多元的扩展空间


以单项监控服务为起点,孵化一套具备快速扩展和广泛适用能力的监测物联网架构,同时以大气监测为案例,进行可用性验证。

架构详细设计

1. 总体设计


整个系统计划由如下几个模块组成:


  • 数据采集模块:在终端侧采集传感器的监测数据。

  • 无线接入模块:提供多种无线协议,支持终端接入网络。

  • 设备接入模块:在云平台侧处理各种无线接入协议及设备数据规整。

  • 业务处理模块:管理终端设备,分析传感器数据及可视化。


架构概要设计图如下所示:



2. 数据采集模块


数据采集模块负责在终端侧采集传感器的监测数据。


这里有 2 个设计要求:


  • 支持多样化的传感器。我们的系统应该不限制传感器的品牌,这样数据源会有不同的精度和协议格式,需要架构上做些处理。

  • 支持多样化的终端硬件。开发者手头物联网开发板,我们系统应支持尽量多的开发板,保证项目的可玩性,吸引极客们加入进来。


模块设计思路


  • 端侧不处理传感器数据。一方面传感器存在精度差异,一方面有别于政府专用监测点,生活监测点必然存在数据干扰,基于这两点无法保证端侧的数据准确性。设计上端侧不处理传感器数据,在平台汇聚后由业务处理模块进行区域数据分析,滤除个例误差。

  • 端侧不限制传感器数据格式。开发者可能会对接多种传感器,不同品牌、不同型号的传感器均可能存在不同的数据格式,为了减少端侧的开发工作量,借助“设备接入模块”的平台设备数据解析引擎,传感器数据可以在后端在做协议格式规整。

  • 端侧不限制硬件形态。腾讯物联网终端操作系统(TencentOS tiny)是腾讯面向物联网领域开发的实时操作系统,已经对接了市面上主流的芯片架构以及物联网开发板,通过 TencentOS tiny 输出 example 指导开发者。同时其他开发者也可基于 Arduino、树莓派等硬件形态开发相应终端,我们通过社区传播优秀的接入实践教程,进一步丰富终端硬件形态。


3. 无线接入模块


无线接入模块提供多样的无线接入方式,让终端入网并接入设备接入平台。


无线接入这边有一个硬性要求,大部分终端应该都安装在室内及阳台,仍需要部分终端安装于街道上,用以监测户外真实的大气环境。


模块设计思路


由于 LPWAN 具有低功耗、远距离等优势,我们可选用 LPWAN 相关技术来满足户外街道的终端接入需求。目前最主流的是 LoRa 和 NB-IoT 两种无线接入方式。


NB-IoT 同 GPRS 一样,都要购买 sim 卡;LoRa 则需要购买 LoRaWAN 网关。二者都存在一定的搭建成本。但在 LoRa 方面,鹅厂提供了开放共享的腾讯 LoRa 社区网络,其中包括腾讯在深圳自建的数百个 LoRa 网关,用户可查找附近的社区 LoRa 网关就近完成 LoRaWAN 设备接入,降低应用开发门槛。



同时考虑在成本和便利性的优势,市面上一个 WiFi 开发板在 20 块钱左右,直接通过家庭路由器便可以接入平台,因此我们仍希望能支持 WiFi 接入方式。


综上,在无线接入模块的设计,我们首选 LoRa、辅以 WiFi,同时仍能尽量支持其他的无线接入方式。


4. 设备接入模块


设备接入模块负责各类终端设备的平台侧接入,并且进行不同设备协议的规整,发送给业务处理模块。


为了让业务系统快速支撑海量物联网设备连接,毫无疑问需要选择成熟的物联网平台进行开发。腾讯云物联网开发是目前腾讯云主推的一站式开发平台。除了具备海量连接的可靠能力,还支持 LoRa、WiFi、蜂窝网络 等多种接入协议。



另外很重要的一点,腾讯云物联网开发平台还为用户提供产品开发及定义数据模板的能力,可以定义统一的大气传感器产品。同时灵活的设备数据解析引擎,可以将不同的传感器协议格式进行脚本处理,转化成我们需要的统一的数据模版格式,满足我们端侧不限制传感器数据格式的需求。


最后物联网开发平台中可以配置相应的第三方服务器 URL,将规整后的设备协议推送给我们的业务处理模块。


5. 业务处理模块


业务处理模块负责管理终端设备,分析传感器监测数据。


在设备管理部分的设计中,由于物联网开发平台已经可以定义具体数据模版的产品,因此我们在这个大气监测系统将会定义具体的几种大气监测产品,如 pm2.5,如 voc。业务处理模块中只需进行指定产品的设备管理,用户无需再操心具体的产品 json 协议,降低用户的使用门槛。


在业务处理部分,涉及 API 网关、SCF 云函数、云数据库及腾讯云图等多款云端组件,eckygao 已在系统功能与架构概述中进行了的阐述。

案例解析

春节前我们快速讨论确定了这套系统架构。并且在 TencentOS tiny 团队的帮助下,在不到 2 天的时间内,快速搭建了整套系统及 5 个监测点。


下文介绍具体案例,方便大家加深理解这个系统架构。


1. LoRa PM2.5 节点


在数据采集部分,我们采用了目前 NUCLEO LoRa 开发套件作为主控,串口连接攀藤 PMS7003 PM2.5 传感器。



软件上基于 TencentOS tiny 快速开发了一个固件版本,后续相关同事会再分享一篇具体的嵌入式软件设计分析。下图是具体的传感器数据协议,开发板直接透传数据 payload 给到云端。



2. LoRa 网关


在无线接入部分,5 个监测点直接安装了 5 个社区 LoRa 网关。




3. 腾讯云物联网开发平台


传感器的原始数据上传到腾讯云物联网开发平台后,经过设备数据解析脚本的处理,原始的传感器协议格式已转化为具体的产品属性,以 json 格式推送给大气监测平台。


如下是针对攀藤 PMS7003 PM2.5 传感器编写的数据解析脚本:


function RawToProtocol(fPort, bytes) {    var data = {        "method": "report",        "clientToken" : new Date(),        "params" : {}    };    var i = 0;        data.params.PM1_CF1 = (bytes[i++] << 8) | bytes[i++];    data.params.PM2d5_CF1 = (bytes[i++] << 8) | bytes[i++];    data.params.PM10_CF1 = (bytes[i++] << 8) | bytes[i++];        data.params.PM1 = (bytes[i++] << 8) | bytes[i++];    data.params.PM2d5 = (bytes[i++] << 8) | bytes[i++];    data.params.PM10 = (bytes[i++] << 8) | bytes[i++];        data.params.particles_0d3 = (bytes[i++] << 8) | bytes[i++];    data.params.particles_0d5 = (bytes[i++] << 8) | bytes[i++];    data.params.particles_1 = (bytes[i++] << 8) | bytes[i++];    data.params.particles_2d5 = (bytes[i++] << 8) | bytes[i++];    data.params.particles_5 = (bytes[i++] << 8) | bytes[i++];    data.params.particles_10 = (bytes[i++] << 8) | bytes[i++];        data.params.version = bytes[i++];    data.params.Error = bytes[i++]        return data;}
复制代码


下图是 LoRa PM2.5 节点在物联网开发平台中的设备属性呈现:



4. 业务平台最终效果


最后再附上一张大气监测平台的腾讯云图呈现效果。



鹅厂“手搓一个分布式大气监控系统”系列正在持续更新中,欢迎大家持续关注,解锁更多精彩内容~


本文转载自公众号云加社区(ID:QcloudCommunity)。


原文链接


https://mp.weixin.qq.com/s/LRl_XzmyxauG2EJ0qBvjPg


公众号推荐:

跳进 AI 的奇妙世界,一起探索未来工作的新风貌!想要深入了解 AI 如何成为产业创新的新引擎?好奇哪些城市正成为 AI 人才的新磁场?《中国生成式 AI 开发者洞察 2024》由 InfoQ 研究中心精心打造,为你深度解锁生成式 AI 领域的最新开发者动态。无论你是资深研发者,还是对生成式 AI 充满好奇的新手,这份报告都是你不可错过的知识宝典。欢迎大家扫码关注「AI前线」公众号,回复「开发者洞察」领取。

2020-05-24 10:0020340

评论

发布
暂无评论
发现更多内容

中国量子产业集结,用知识产权助力量子应用化

脑极体

Ableton Live 11 Suite 音乐制作软件v11.2.11中文版安装教程

Rose

音乐制作 Ableton Live 11 Suite Ableton Live

内部开发者平台与门户:二者有何关联?

SEAL安全

企业号 3 月 PK 榜 内部开发者平台 内部开发门户

火山引擎边缘渲染,驱动游戏体验升级

火山引擎边缘云

边缘计算 火山引擎 渲染 边缘云

华为全新发布2023春季旗舰新品,智慧生活再进化

最新动态

如何将「知识」体系化管理

Java 架构 职场 知识管理

Redis链表底层实现以及生产实战

做梦都在改BUG

Java redis 缓存 源码 链表

Microsoft 365 for Mac(原Office 365) v16.71正式版

魔仙苹果mac堡

Office 365 office许可证

pd虚拟机专用windows系统镜像(m1/intel)

魔仙苹果mac堡

pd 18 pd虚拟机 Win11系统下载

Docker 开始清退开源组织,不付费就删除所有私镜像怎么看

HoneyMoose

Acrobat DC弹窗:“未找到IMSlib,Acrobat服务将无法正常工作”,如何解决?

Rose

Acrobat DC 服务将无法正常工作

SecureCRT for Mac(强大的终端SSH工具)附许可证 v9.3.2正式版

魔仙苹果mac堡

SSH工具 SecureCRT下载 SecureCRT破解版 SecureCRT许可证

DrawerLayout(官方侧滑菜单)的简单使用

智趣匠

ViewPager DrawerLayout SlidingMenu

Nautilus Chain主网上线在即空投规则公布,如何获得更多的空投?

股市老人

Error:SyntaxError:JSON Parse error:Unexpected EOF 解决办法

Rose

adobe 安装报错

MacDroid mac版:实现安卓手机数据传输

魔仙苹果mac堡

android Mac 数据传输 MacDroid for mac

Nautilus Chain主网上线在即空投规则公布,如何获得更多的空投?

鳄鱼视界

压测模式该怎么选?RunnerGo五大压测模式详解

爱研究代码的极客人

Jmeter 性能测试 自动化测试 压力测试 LoadRunner

数据库+chatGPT3.5 优化、索引、注释、SQL就是一句话的事了

非喵鱼

Java 数据库 openai ChatGPT ChatGPT4

循序渐进讲解负载均衡vivoGateway(VGW)

vivo互联网技术

负载均衡 网关

IntelliJ IDEA 2022 for Mac(Java开发工具) v2022.3.3汉化版

魔仙苹果mac堡

IntelliJ IDEA IntelliJ IDEA激活码 IntelliJ IDEA2022

给程序加个进度条吧!1行Python代码,快速搞定~

程序员晚枫

Python pip 进度条

Nautilus Chain主网上线在即空投规则公布,如何获得更多的空投?

EOSdreamer111

Movist Pro for mac播放流畅、观影愉悦!

Rose

苹果电脑 视频播放器 Movist Pro Mac Movist Pro 中文版

深入浅出RPC服务 | 不同层的网络协议

京东科技开发者

网络协议 RPC调用 应用层 jsf 企业号 3 月 PK 榜

窄带高清画质增强之生成式细节修复

阿里云视频云

云计算 窄带高清

华大北斗上榜“深圳知名品牌”

江湖老铁

尤大:不会说 Rap 的前端不是好前端!写一个 v-rap 指令!

泰罗凹凸曼

JavaScript 有趣的技术知识

如何针对多租户 SaaS 使用案例扩展机器学习推理

亚马逊云科技 (Amazon Web Services)

Amazon SageMaker

2万字60道MySQL经典面试题总结(附答案)

程序员大彬

MySQL 数据库 java面试

Bitmap、RoaringBitmap原理分析

京东科技开发者

数据结构 算法 存储 BitMap 企业号 3 月 PK 榜

鹅厂分布式大气监测系统:架构介绍及案例解析_架构_云加社区_InfoQ精选文章