OceaBase开发者大会落地上海!4月20日共同探索数据库前沿趋势!报名戳 了解详情
写点什么

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

  • 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


公众号推荐:

2024 年 1 月,InfoQ 研究中心重磅发布《大语言模型综合能力测评报告 2024》,揭示了 10 个大模型在语义理解、文学创作、知识问答等领域的卓越表现。ChatGPT-4、文心一言等领先模型在编程、逻辑推理等方面展现出惊人的进步,预示着大模型将在 2024 年迎来更广泛的应用和创新。关注公众号「AI 前线」,回复「大模型报告」免费获取电子版研究报告。

AI 前线公众号
2020-05-24 10:0020158

评论

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

serverless与容器优缺点

天翼云开发者社区

serverles

Teradata的离开,是国内ToB服务转变的信号

ToB行业头条

MQTT发布/订阅模式介绍

EMQ映云科技

物联网 IoT mqtt 客户端 企业号 2 月 PK 榜

VOP消息仓库演进之路|如何设计一个亿级企业消息平台

京东科技开发者

软件架构 平台 VOP 客户调用 消息仓库

OpenYurt v1.2 亮点速览丨云边流量峰值相比原生 K8s 降低 90%

阿里巴巴云原生

阿里云 开源 容器 云原生 openyurt

人工智能 LLM 革命前夜:一文读懂ChatGPT缘起的自然语言处理模型Transformer

阿里技术

人工智能 自然语言处理

从MVC到DDD转变过程中的一点碎碎念

为自己带盐

DDD CQRS

全网招募P图高手!阿里巴巴持续训练鉴假AI

阿里技术

人工智能

LED显示屏怎么翻新?

Dylan

LED LED显示屏 led显示屏厂家

创建MQTT连接时如何设置参数?

EMQ映云科技

物联网 IoT mqtt 企业号 2 月 PK 榜 连接参数

如何从0开始搭建 Vue 组件库

京东科技开发者

npm UI vant Vue3 组件库

接口调试时如何实现接口之间的数据传递?

不想敲代码

业务“兔”飞猛进,只因他们做对了这件事

华为云开发者联盟

数据库 华为云 企业号 2 月 PK 榜 华为云开发者联盟

PostgreSQL:内存结构

天翼云开发者社区

eKuiper 1.8.0发布:零代码实现图像/视频流的实时AI推理

EMQ映云科技

物联网 IoT 视频流 流式计算 企业号 2 月 PK 榜

快速开发光伏电站数字孪生运维系统——实践类

阿里云AIoT

阿里云 物联网 IoT

C#/VB.NET 如何在不同工作簿之间复制单元格范围

在下毛毛雨

C# .net Excel 文档操作

Apipost正式发布《API行业白皮书》!

不想敲代码

API 白皮书 行业趋势 行业报告

git使用ssh

刘旭东

git SSH

天翼云联合国际咨询机构IDC发布《中国医疗云建设与应用白皮书》

天翼云开发者社区

关于DataLeap中的Notebook,你想知道的都在这

字节跳动数据平台

数据库 大数据 数据治理 数据研发 企业号 2 月 PK 榜

腾讯内网“Redis 深度(全彩版小册)”限时开源!面面俱到太全了

架构师之道

Java 面试 架构师

接口测试的测试要点

Liam

测试 接口测试 接口测试软件

分布式云原生平台Kurator v0.2.0正式发布!一键构建分布式云原生平台

华为云开发者联盟

云计算 华为云 企业号 2 月 PK 榜 华为云开发者联盟

火山引擎数智平台的这款产品,正在帮助APP提升用户活跃度

字节跳动数据平台

大数据 客户数据平台 客户 客户数据 企业号 2 月 PK 榜

如何在Excel中查找并高亮数据

Geek_249eec

C# .net Excel VB.NET

深度访谈 Eolink 高管|研发团队如何更好地进行 API 管理?

万事ONES

项目管理 软件研发 API管理

F5 2022财年安全营收10亿美金 服务应用安全做了哪些事?

F5 Inc

移动应用 安全 应用安全

了解医疗上云门道,尽在“共铸国云 红云行业思想汇”!

天翼云开发者社区

打造自主可控云网算力,天翼云为湖南数字经济发展注入新动能

天翼云开发者社区

IoT Studio场景最佳实践——实践类

阿里云AIoT

阿里云 物联网 IoT

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