写点什么

鹅厂这个穷得成本精确到 0.01 元的微团队,怎么利用 IoT 与云原生监测大气质量的?

  • 2021-04-19
  • 本文字数:6215 字

    阅读完需:约 20 分钟

鹅厂这个穷得成本精确到0.01元的微团队,怎么利用IoT与云原生监测大气质量的?

一、鹅民大气监测项目简介


在物联网和微团队之间如果加入了云能够做到什么事情?关于这个点,首先我们来看一个真实具体的案例。如下图所示,这个项目是腾讯内部发起的公益项目:鹅民大气监测项目,核心人员只有 5 个人,其他的都是相关的志愿者和参与者。5 个人的团队是一个非常典型的微小团队,我们这样一个团队做成了什么事情呢?



关于这个项目的起源,先来看一组数据。如下图所示,这是 2019 年中国生态环境公报的摘要,2019 年有 337 个城市进入了大气质量分析中,其中真正达标的城市数量只有 46.6%,不到一半。在这些城市当中,如果按天数来计算的话,20%的时间是处在污染情况下的,并且 PM2.5 是主要污染物。



然后我们进一步,看一个真实的事件,今年年初 3 月份京津冀区域大气污染过程的分析,这个报告发布在中国生态环境部的官网,因为这次事件是短时重度污染,所以大家关注度比较高。



基于这些情况,生态环境部近期发布了文件:2020-2021 秋冬季大气污染综合治理方案征求意见稿。第一部分覆盖了京津冀,第二部分覆盖了长三角。



那么长三角和京津冀都看完了,大家可能会比较关注珠三角是什么样子呢?我们来看一下深圳有什么样的相关信息可以提供给大家。


中国天气网是隶属于中国气象局的公共气象服务中心,从中国天气网发布的信息来看:深圳有 11 个监测点,每个监测点每小时会上报数据告诉大家上一个小时的空气质量是怎样的。这里我们可以算一笔账,深圳有 2000 平方公里,分为 11 个监测点,每小时同步一次,一共每天上报 264 次。



我们团队发现,如果有民众很关注空气质量,非常想了解空气对自身的影响,但是却没有办法拿到实时的数据。那么是否能利用云来快速实现这样的能力,帮助我们发现身边的空气事件呢?另外,中国天气网这个项目虽然符合国家标准,但是没有办法反映具体小区的环境情况,于是我们的项目机会就这样诞生了。


二、项目一期:原型


项目一期我们要做的是原型,做原型的时候需要关注两个点:第一个是快速实现;第二个是能力验证。这是小微企业面临的第一个风险,是否能用很短的时间、很小的成本来验证自己想做的方向或这个点是否能真的产生价值?


小微企业不像大企业,没办法频繁试错还可以活得很好,每一次投入都必须要有产出,如何快速验证就是关键点。原型期我们团队同样面临这样的问题,我们只有 5 个人,而且是利用自己业余的时间,所以我们决定先快速跑起来。


先来看一下我们的架构组成,如下图所示,主要分为三个部分:采集、处理和展示,它实现的效果是把监测到的数据传递到最终的用户。



我们分成了架构层和实现层。在采集这里,监测节点层是用腾讯云兼容硬件,软件用的是 TencentOS Tiny,这是腾讯开源的物联网操作系统,成熟度比较高。监测节点拿到的数据通过接入网关层,然后传到平台接入层,也就是物联网开发平台 IoT Explorer。到这里为止数据已经上云了,使用 TencentOS Tiny 很容易就能把你的数据传递上云。


上云以后进入到第二个环节,这也是很多物联网团队不太擅长的环节,就是如何在云上进行处理和深加工。在处理的过程有三个组成部分:使用腾讯云 API 网关帮我们做鉴权;通过云函数把数据写到数据库里;最后通过腾讯云图直接展示数据。


最开始的原型设计,我们投入了 3 个人,用了 20 人时就完成了整个系统从设计到上线。具体来说就是一个人干两天活基本上就干完了,这个成本是大多数的微团队能够承受的。一期的案例我们也已经把它放到云+社区上了,后续大家可以在云+社区上阅读相关文章看看是怎么操作和实现的。


大家可以看到,在架构设计当中,云产品基本贯穿了始终,但是在接入网关层面却没有云产品,这是为什么呢?这是因为我们使用了腾讯云 Lora 社区网络。


这个社区网络于 2019 年 12 月份发布,由开发者共建。如果你使用了 Lora 终端,只要你的设备在网络覆盖范围内,设备配置好并上电,数据就可以上报,这样开发部署的成本降低非常多。


   

那么我们一期的原型究竟做出的效果怎么样呢?如下图所示,我们使用了腾讯云图这个产品,用来展现系统的 WEB 界面图,上面包含了地图组件等各种信息。看起来也许比较复杂,但因为都是组件拖拽式,所以本身开发的成本非常低。配置 5 分钟,调试了大概 15 分钟基本就搞定了。



配套的是我们的一个终端,在做终端的时候为了降低成本,我们使用了现成的开发板。这里使用了 TencentOS Tiny+Nucleo Lora 开发套件,因为本身的技术比较成熟,TencentOS Tiny 跟开发板的适配性也很好,所以开发成本也并不高。到这里我们终端的原型和系统原型就做完了。

   

那么我们做的这个东西是不是真的有用呢?接下来来看一个具体的案例。如下图所示:这是今年 4 月 3 日,我们 5 个节点监测到的数据。大家可以看到每个节点的数据都是上升又下降,但是它们的时间点并不相同。



从我们节点分布来看,呈现了西侧先上升下降,东侧后上升下降的过程,于是我们就猜测:是否有一个移动的污染源进入了深圳?


为了验证这个猜想我们做了几个动作:第一步就是去看中国气象局的数据。虽然它是按每小时发布的,但是可以看到数据指标是上升的,说明这个事件是真实存在的。



紧接着再看其他地区的情况,这里我们并没有找到一个官方的带地图的数据,而是使用了第三方的数据,来源是 AQICN,是一个总部在北京的全球化组织,向全球的使用者提供大气质量监测的具体数据和情况。



从这里也看到呈现了明显的西高东低的情况,符合扩散的基本原则要求,这和我们的监测数据基本一致。接着我们分析了地形,污染气团可以从很多方向过来,为什么结果是自西向东,而不是自南向北或者其他情况呢?


最后发现,原来是深圳附近的山太多了,如果污染源真的是自西向东来的话,被山阻隔以后只有一个通道,就是通过珠江通道而来。但我们的数据源比较少,所以说这只是一个猜测,并不是绝对准确的信息。



但到此为止已经可以发现:我们的监测数据真的产生了效果!为什么?因为我们每 15 秒就会上报一个信息,这个频率能够帮我们发现这个趋势,发现一个正在移动的污染气团,这证明了我们的原型是有价值的。

   

同样的事件不只发生一次,如下图所示,这是今年 2 月 2 日的另一个案例。这个案例持续的时间比较长,总共 10 个小时,分为 2 个波段,也可以看到明显的上升下降的动作。



到此为止,我们的原型基本达到设计之初所要的效果,接下来我们要做的事情就是把覆盖面扩大,点数增加,提供更多的数据,做更深度的分析。


三、项目二期:拓展


二期的主要目标是拓展,具体包括两个部分:一个是规模运营,一个是数据容灾。



如上图所示,架构这里我们有几个动作,首先我们把中间件层的网关放到了核心环节,所有的东西都要经过它,核心是为了保护我们的数据库。毕竟云图对数据库带来的压力是不可控的,而经过中间件的 API 网关和中间件,可以保证我们系统的健壮性。


第二部分是我们增加了两个环节,在原有数据库的基础上先是增加了一个对象存储做备份,另外又增加了一个异地数据库帮我们做异地容灾和备份。这样的好处是主数据库用来做实时的查询和入库,从数据库做长时间的大数据量的分析,这样就避免了压力导致数据库崩溃。


为什么要这样做呢?主要是因为我们这个团队太穷了,我们没有钱,只能买最便宜的数据库,再通过架构的方式去优化它。如果大家的团队资金可行的话,云数据库可以有多种选型:单机、双机高可用、三机三地容灾,都可以选用。


二期的架构和逻辑,包括源码,我们都已经开放出来了,大家也可以到云+社区查看相关的帖子,其中包含源码链接,看看我们具体是怎么实现的。


二期阶段我们的节点从 5 个变成 27 个,覆盖度有了较高的增长。另外我们优化了终端,如下图所示,第二期的终端我们用的是 TencentOS Tiny 的 RISC-V 开发板。这个板很小,大概只有一张信用卡大,同时我们自己设计了转接板,大大提高了它的集成度。终端可以放到最小的气象百叶窗里,这样的话它的部署难度也大大降低了。 

 


关于二期的数据量,我们总结了三个数据:5、100、20000000。


  • 5 代表着我们团队只有 5 个人;

  • 100 指的是我们运营近一年,总投入的开发维护时间是 100 人时。

  • 2000 万是我们的数据积累量,我们已经积累了 2000 万条记录。



为什么这么快?主要是因为云的开发成本非常低。另外我们也没有用到任何运维人员,因为云的产品比较稳定,只要架构上的承载能力可行就能长期稳定运行。我们甚至可以做到一两个月都不用看运行的监控数据,只看真正展示出来的功能数据就可以了。


这个系统上线 10 个月已经积累的 2000 万条数据,对我们非常珍贵,因为数据有实时性和稳固性的基础,这 2000 万的数据量就可以更进一步来分析,就能够开发出更多的应用。


四、项目三期:开放


三期我们关注的是开放,主要分为两个部分,一个是管控体系,另一个是生态建设。



三期的架构更复杂一点,首先我们加入了消息队列,然后配套的加入了云日志服务。消息队列+日志服务达到的效果就是:我们不再是单链路的消息传播,因为有了消息队列,我们有了多个通路,这就达到了数据对账。另外有了消息队列和日志服务,这样整个系统的管控日志也完成了。


接着我们就开始强化用户侧输出的应用能力,基于腾讯云开发和腾讯连连。因为我们关注到,现在很多情况下大家是更喜欢用手机的,并不是每个人都随身带着电脑,那么怎么样让大家随时看到这个数据呢?小程序是一个很好的切入点,于是就引入了云开发和腾讯连连小程序。


腾讯连连是物联网开发平台 IoT Explorer 自己配套的产品,而云开发具备更多的空间,可以做更复杂的事情,它们的使用维度是不一样的。


同时为了生态,我们提供了一个新的出口,那就是实验数据。后续我们希望把数据开放出来,让大家能够拿到这些数据,并且用这些数据做自己想做的应用。



   

总的来看,三期阶段我们的计划是完善管控,开放实验数据,我们希望这个系统是越来越稳定的,并且数据可以开放出来。第二步是开源架构,开放实验生态,架构我们也希望把它拿给更多的人看,因为这个架构不仅仅可以用于大气监测,很多其他的应用都可以做。


其它类的应用我们腾讯云伙伴已经开始在做了,其中一个案例就是消防类的监控,让消防设备通过物联网上云,就可以实时知道每个节点当前是活跃还是故障,对于保障消防安全具有很重要的意义。

 

接下来再谈一谈大家非常关注的问题:项目成本。微团队的成本,除了人力就是资源消耗,4 个人的团队花十几二十万验证一个项目,一定是不可行的。



如上图所示,表格上的数据来自于我们真实的运营结果,这里包含了终端硬件部分,也包含云端服务部分,每一部分的价格和消耗都列在上面。当然由于大家购买的硬件不同,所以具体成本上可能会有差异。


云端部分成本相对明确,我们这个项目大量使用了腾讯的云原生相关的产品,比如云函数、API 网关,这些产品是按量付费的,它可以帮助大家极大降低实验过程中所产生的成本。举个例子,如果 1 万个节点需要每分钟上报一次,利用我们二期的架构,每个节点一年成本是 2 块多钱,而到了三期这里的成本可以降到 1 块钱一下。


   

我们现在准备做的动作主要分为三个部分。第一部分是开源,我们把源码提供给大家,大家可以尝试自己的项目。


第二部分是架构,整个系统的搭建和逻辑,我们已写成文章放到云+社区,大家可以参考。


第三个是生态,在生态这个环节,我们项目内部发生过一次讨论。因为我们团队太小了,微团队还是要聚焦自己核心的能力,而我们最核心的能力就是架构,而不是应用。


所以我们选择开放数据,让更多的人用我们的数据做自己想要的应用。源码因为尚不成熟,我们先提供了部分的开源代码,后续更新的源码也会陆续放出。我们提供架构和数据,大家可以提供自己需求来设计,让我们一起来看看这个事情还能做成什么样子。 


五、微团队项目开发经验


微团队能力是没有问题的,如何选对方向、如何做对事情是有几个要素的,我们也进行了相关的总结。

1. 项目选型


项目选型关注的是产品要素,也就是价值。主要看用户、市场,和同业,这里为什么没有写竞品呢?因为我们不是盈利性的项目,更多是为了传播技术理念,想跟大家交流,所以用的词是同业。



用户能证明你的东西是否真的有价值,人家是否真的需要你的产品。市场是决定有多少人用,有多少人愿意关注。同业是同行业里其他的产品,它们能够佐证你的这个产品价值的深度在哪里。

大家现在能够拿到的每小时,甚至每秒钟的实时数据就是我们提供的价值。这三个要素综合起来就决定了我们当时立项的重点,最后我们决定把人力、时间和资源投入到这个项目当中来,所以这个项目才会真正启动。


2. 风险管理

 

  

接下来是风险管理,也就是技术要素。这里需要关注的两个字就是“生存”,微团队最大的问题就是:不可能停下来完全做一个理想的事情。怎么在自己已有工作不受影响的情况下能够做新的尝试和探索呢?


答案就在于质量、效率和成本。质量代表你的功能,你的功能要有价值,这个产品才会有价值,如果你的功能根本达不到要求,就算投入 1 块钱也是损耗。


第二个是效率,代表着你究竟能够多快地解决这个问题。一个小团队如果花了 3 个月才能做出一个东西,那么这个小团队就会面临很严峻的生存问题。


第三个是成本,就是如何低成本做事情,我们这里是一个公益性的项目,也不打算挣钱,控制成本就是我们非常关注的点。而对于一些真正商业性质的微团队,你的成本越低则后续的收益就会越大。


这三个点结合起来就决定了我们的原型要通过云原生来做,最后效果也是达到了我们的预期:人数少、时间短、成本低。


3. 持续运营



最后是持续运营,也就是成长。这里也有三个词要分享:时机、渠道和伙伴。


时机指的就是事件运营,很多东西即使你知道它是对的,但是当用户没有设身处地的感觉的时候是没有办法感同身受的。所以我们的项目运营时间基本放在秋冬季,大家可以很明确感受到空气是好还是坏,关注点就会不一样。


第二个是渠道,也就是从哪里传播运营出去。大家知道微团队重要的是利用产业链的生态和能力,而不是仅仅做好自己,如何让更多人看到你是非常重要的点。


第三个是伙伴,指的是你生态链上的合作者,他们决定了你的整体交付能力和空间。结合实际,渠道和伙伴,最后我们的项目团队选择了和云+社区合作,我们在社区上面开设专栏、阅读清单,发布我们每一期的文章,让大家看到我们正在做什么,以及把我们的能力提供出去。


通过云+社区这个平台很多人知道了我们的项目,目前无论是消防类的项目,还是智能 IoT 硬件的项目很多也都是从云+社区带过来的。所以渠道和伙伴对微团队非常重要,大家看到你,你就可以闪光。

念念不忘必有回响,不忘初心方得始终。微团队做事情还是要给行业和客户带来价值。如何让自己更快、更便宜、更直接地产生价值就是我们微团队始终关注的点。


最后放出一些合作的空间和入口,首先是我的本职工作的联合创新实验室,如果大家想成为腾讯云的合作伙伴,并且和腾讯云共同共建方案的话可以联系我们,这里有一个调研单的入口,大家可以填相关信息,后续会有相关人员回复大家。


第二个是社区共建,也就是云+社区。微团队最重要的是让大家看到你,希望大家在云+社区上发表更多的文章,和不同的人、不同的团队有更多的交流。


第三个是 TencentOS Tiny 交流群,TencentOS Tiny 的价值非常大,它帮你把上云的通路都打通了,如果想做 IoT , TencentOS Tiny 是第一个点。在这个交流群里有官方的同学答疑和回复,大家可以加群和我们一起讨论。



头图:Unsplash

作者:高树磊

原文:https://mp.weixin.qq.com/s/xN7w5ss5ZQkwSDsKgenBow

原文:鹅厂这个穷得成本精确到 0.01 元的微团队,怎么利用 IoT 与云原生监测大气质量的?

来源:云加社区 - 微信公众号 [ID:QcloudCommunity]

转载:著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


2021-04-19 16:0620351
用户头像
云加社区 腾讯云官方开发者社区

发布了 230 篇内容, 共 62.3 次阅读, 收获喜欢 255 次。

关注

评论 1 条评论

发布
用户头像
思路很清晰,点赞~
2021-04-25 10:43
回复
没有更多了
发现更多内容

当你面试的时候,被问到关于Fragment的种种,5年经验Android程序员面试27天

android 程序员 移动开发

我才知道原来Flutter内置了10多种Button控件,音视频开发工程师抖音

android 程序员 移动开发

彻底理解Android架构,移动应用开发就业工资

android 程序员 移动开发

微信逆向之朋友圈,2021最新Android大厂面试真题大全

android 程序员 移动开发

微博热门清华学霸的计划表刷屏,程序员该如何制定你的学习计划?

android 程序员 移动开发

想搞懂Jetpack架构可以不搞懂生命周期知识吗?,阿里Android面试必问

android 程序员 移动开发

我又开发了一个非常好用的开源库,调试Android数据库有救了

android 程序员 移动开发

我敢打赌!你从未见过如此简单的Dagger-导航---基于-Android-Studio-4-1

android 程序员 移动开发

往事只能回味!春招 Android 开发岗:我居然三天就拿到了offer

android 程序员 移动开发

怎样才是刷面试题的正确姿势?Android400道面试题+通关知识宝典助你进大厂

android 程序员 移动开发

想掌握Android面试官必问的 Binder 机制?那别想绕开 Binder 驱动源码分析!

android 程序员 移动开发

我学习Android的一些套路,这份333页关于性能优化知识点的PDF你不能不看

android 程序员 移动开发

微信小程序之商品属性分类 —— 微信小程序实战商城系列

android 程序员 移动开发

性能优化,还得看AspectJ,android高级开发实战

android 程序员 移动开发

惨遭社会毒打,公司倒闭突然失业,程序员该如何在下次危机对准时狠狠还击

android 程序员 移动开发

成为一个优秀的Android开发者,需要必备哪些技术&工作技能?

android 程序员 移动开发

我们来剖析一下这个Android猴子的面试过程,以及被问到的问题(1)

android 程序员 移动开发

当事人:现在就是非常后悔,开工那天没去上班,Flutter中网络图片加载和缓存源码分析

android 程序员 移动开发

当面试官要你说一下Activity的启动模式时,怎么回答最合适?标准答案在这里

android 程序员 移动开发

我是如何做到在-5-分钟之内将应用大小减少-60%-的?,零基础学android编程

android 程序员 移动开发

我来告诉你:零基础如何成为高级Android开发,入职字节跳动

android 程序员 移动开发

想掌握Android面试官必问的-Binder-机制?那别想绕开-Binder-驱动源码分析!

android 程序员 移动开发

成功逆袭:越来越胖怎么能忍,我的APK瘦身之路,完整版开放免费下载

android 程序员 移动开发

我们来剖析一下这个Android猴子的面试过程,以及被问到的问题

android 程序员 移动开发

我想谈谈关于-Android-面试那些事,写给有开发经验的你们

android 程序员 移动开发

微信小程序之加载更多(分页加载)实例 ,flutter瀑布流列表

android 程序员 移动开发

怎样让你更快的完成工作去“摸鱼”,我的Android美团求职之路

android 程序员 移动开发

想进阶高级架构师,你需要养成这10个习惯!,掌握这套精编Android高级面试题解析

android 程序员 移动开发

总结了30个例子之后,我悟到了Flutter的布局原理,android移动开发基础答案

android 程序员 移动开发

我又开发了一个非常好用的开源库,调试Android数据库有救了 (1)

android 程序员 移动开发

我的2020年终总结:疫情之下裸辞后的一些感悟和面试心得(上篇

android 程序员 移动开发

鹅厂这个穷得成本精确到0.01元的微团队,怎么利用IoT与云原生监测大气质量的?_架构_云加社区_InfoQ精选文章