时隔16年JeffBarr重返10.23-25 QCon上海站,带你看透AI如何重塑软件开发! 了解详情
写点什么

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

  • 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


2020-05-24 10:0021723

评论

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

网络问题导致金仓数据库备机无法加入集群的排查与解决​

金仓技术

KingBase 金仓数据库

从彼得·蒂尔四象限看 Crypto「情绪变迁」:从密码朋克转向「标准化追求者」

TechubNews

类似亲家相亲,亲人朋友帮忙找对象的交友/app/小程序平台开发搭建

网站,小程序,APP开发定制

Nacos源码—Nacos集群高可用分析(二)

不在线第一只蜗牛

鸿蒙跨端实践-揭秘视图渲染流程

京东科技开发者

发件箱模式实战

俞凡

最佳实践 设计模式

AI 编程实战:如何用 AI+DevBox 三周开发出 WAF 防火墙(保姆级教程)

硅基新手村

ide AI vscode cursor

高性能发件箱模式(每天处理20亿条消息)

俞凡

最佳实践 设计模式

MCP 规范新版本特性全景解析与落地实践

阿里巴巴云原生

阿里云 云原生 通义灵码

e签宝智能合同Agent于数字中国重磅发布!

科技汇

工业计算机:工业领域的智慧大脑

极客天地

【IoTDB 线上小课 15】树表双模型,到底该怎么选?

Apache IoTDB

AI与情感计算:如何让机器更好地理解人类情感与情绪?

天津汇柏科技有限公司

人工智能 AI

轮播图导航组件 | 纯血鸿蒙组件库AUI

华哥的全栈次元舱

开发语言 鸿蒙开发 纯血鸿蒙 ArkUI / eTS 鸿蒙组件库AUI

Flutter小程序与跨端组装技术:高效App开发的新范式

xuyinyin

0 代码,一键部署 Qwen3

阿里巴巴云原生

阿里云 Serverless 云原生 函数计算

『Plotly实战指南』--在金融数据可视化中的应用(上)

量贩潮汐·WholesaleTide

Python

不止于展“世亚人工智能展·世亚智博会”引领科技与商贸新变革

AIOTE智博会

人工智能展

天润融通开启AI Agent新时代,引领客户服务智能化升级

天润融通

商超拣货业务流程与常见模式

PeterOne

人工智能 AI 运筹规划

【签约快讯|天润融通签约极核电动】

天润融通

在京东做AI的95后:我们这样搞定技术难题

京东零售技术

解决金仓数据库启动报错“内存不足”的问题

金仓技术

KingbaseES 金仓数据库

跨端生态与AI技术协同:移动研发范式的智能重构

xuyinyin

【解决方案】DistilQwen2.5-DS3-0324蒸馏小模型在PAI-ModelGallery的训练、评测、压缩及部署实践

阿里云大数据AI技术

人工智能 大模型 模型部署 PAI DistilQwen2.5

云上玩转Qwen3系列之二:PAI-LangStudio搭建联网搜索和RAG增强问答应用

阿里云大数据AI技术

人工智能 rag PAI Qwen3 LangStudio

当 CEO 患上了 AI 焦虑症(之四):NoETL,万数皆可问!

Aloudata

数据分析 数据开发 指标平台 ChatBI 智能问数

太阳能薄膜频谱吸收率_CST软件仿真案例

思茂信息

cst CST软件 CST Studio Suite

天润融通助力工业巨头,从人工派单到智能调度的售后提效之路

天润融通

天润融通AI Agent实战营成功举办,助力企业革新客户服务模式

天润融通

机器人赛跑 外放电冰水 奇瑞集团“解锁”职工运动会新玩法

科技热闻

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