当前位置: 首页 > 科技观察

Edeva如何利用持续融合和物联网建设智慧城市

时间:2023-03-12 07:31:48 科技观察

由AnaTavares和JohnEskilsson编译|BugattiEdeva于2009年在瑞典林雪平成立,旨在为智慧城市开发强大的解决方案。它提供托管服务和完整的系统,包括硬件和软件平台。作为动态减速带Actibump和智慧城市平台EdevLive的开发商,Edeva团队主要服务于市政、区域和国家道路管理部门、收费站、环保部门和执法部门。该团队还解决了许多其他问题,从为决策获取大量环境数据到开发筛查量表以帮助执法部门评估车辆超载。例如,后者可以减少控制每辆车所需的时间、加快交通检查并允许执法部门控制更多车辆。关于团队Edeva的团队是一个有影响力的11人小组,负责构建硬件物联网设备、分析时间序列数据,并使客户(有时甚至是公众)可以访问这些数据。作为一名软件架构师,我负责构建接收、存储、分析、显示和共享客户事件数据的最佳解决方案。然后,我们的团队一起工作来创建实际有效且客户真正想要的解决方案。项目介绍Edeva开发了动态减速带和智慧城市平台Edevalive,名为Actibump。Actibump自2010年以来一直在瑞典使用。超速行驶的车辆启动了道路上的坡道,坡道降低了几厘米,从而形成了一个下沉的减速带。Actibump为公共交通工具(例如公共汽车和紧急车辆)提供良好的可达性,同时为行人和其他弱势道路使用者保持安全速度。这也是一种环保解决方案,有助于减少噪音和二氧化碳排放。Actibump可以与Edevalive系统结合,为Edeva客户提供有价值的远程监控服务和统计数据。我们收集的大部分数据基于物联网设备:交通流量数据:Actibump测量迎面而来的车辆的速度,以确定是否需要激活减速带。我们捕获雷达数据等信息并将事件发送到智慧城市平台Edevalive。数据将未来的汽车视为交通流,而不是单个车辆,以创造尽可能顺畅的交通流。车辆分类数据(动态称重):Actibump配置后可具有动态称重功能。这意味着减速带的盖子上装有一个非常灵敏的高速采样规。当车辆通过减速带时,仪表会记录几个重量测量值。这样做,它可以检测车辆有多少个车轴,并对车辆类型进行分类。同时,它使用仪表指纹为每个轴触发一个事件,以便我们可以分析重量测量是否正确。车辆分类数据(雷达):如果我们想对尚未安装Actibump的车辆进行分类,我们可以引入一个分类车辆类型的雷达。路边服务器控制雷达、收集数据并将数据推送到Edevalive。自行车和行人数据:我们使用安装在人行道和自行车道上方的摄像头。摄像头可以检测和统计双向通过的行人和自行车。我们将这些数据推送到Edevalive进行分析。车牌数据:我们可以使用摄像头来检测车辆牌照。这样我们就可以控制闸门等设备自动开启。它还可用于查看通过摄像头的电动汽车与汽油或柴油汽车的数量,或确定车辆是否超重。陀螺仪数据:我们提供陀螺仪传感器,可以收集所有不同平面的加速度数据。该设备会生成大量数据,这些数据可以批量或作为流(如果车辆连接到互联网)上传到Edevalive。例如,此数据带有GPS标签,可用于计算加速度并向公交车司机指示工作状况。该数据还可用于计算车辆磨损和许多其他指标。环境数据:监测环境数据在智慧城市平台中非常重要。这就是为什么我们使用小型便携式设备来测量空气中出现的不同大小的颗粒。它还可以测量二氧化碳和其他气体。此外,它还测量温度和风速等日常数据。所有这些数据都被推送到Edevalive。警报数据:如果传感器或其他组件出现故障,我们的物联网设备和路边服务器可以发送警报信息。所有这些数据都像常规物联网事件一样进入Edevalive,但这些事件仅在内部使用,以便我们可以在出现问题时尽快做出反应。状态数据:如果在警报数据中检测到异常,状态数据仅报告服务器或物联网设备的状态。这些设备将运行自检并报告磁盘利用率、温度和负载等统计信息。这也仅供内部使用,用于发现趋势或解决任何问题。例如,将CPU负载与固件版本号或其他软件版本关联起来很有用。管理数据:SQL和时间序列数据在这里真正发挥作用。假设我们添加了一个新设备,它有一个配置对象保存在Timescale的总表中。该对象包含一些元数据,例如添加到系统的日期或设备的显示名称。这样,我们可以轻松地使用联合来获取有关设备的元数据,同时获取即将发生的事件的时间序列数据。该实现只需要处理一个数据库连接并运行一个查询。选择和使用TimescaleDB几年前当我们开始在MySQL中存储数据时,我们意识到需要一个时间序列数据库。当时我们切换到MongoDB,它对我们来说工作得很好,但需要大量的管理工作,而且很难引入其他开发人员。我研究了InfluxDB,但最终没有考虑它,因为它是另一个需要学习的系统,这是我们从MongoDB中吸取的教训。我一直在寻找一种解决方案来填补以前系统无法填补的空白。就在那时,我找到了Timescale并发现了这个托管解决方案。我们是一个小帮派,但构建高影响力的软件意味着我们没有时间投入大量精力来调整和管理我们使用的每个工具,但我们仍然希望拥有控制权。此外,由于TimescaleDB基本上是具有增强的时间序列功能的PostgreSQL,因此如果需要的话,引入新的开发人员要容易得多。使用Timescale,我们的开发人员立即知道如何使用该产品,因为他们中的大多数人已经熟悉SQL。Edeva在我们的智慧城市系统中使用TimescaleDB作为主数据库。我们的客户可以控制他们的物联网设备(例如Edevalive的Actibump),并且作为该系统的一部分,可以查看捕获的数据以快速了解趋势和历史数据。我们提供了许多图表来显示不同时间跨度(例如日、周、月和年)的数据。为了快速呈现这些数据,我们使用了连续聚合(ContinuousAggregation)。对我们当前部署和未来计划的工作影响最大的TimescaleDB功能之一是持续聚合。它使我们的仪表板从蜗牛般的速度变成闪电般的速度。如果我们构建功能以便客户端可以使用数据,请始终首先聚合以加快查询速度并减少数据库负载。过去需要几分钟才能对长期数据运行一些查询,而现在几乎所有对长期数据的查询都可以在不到一秒钟内完成。例如,我们总是很难随时间显示85%的速度。要获得准确的百分位数数据,您的计算必须基于原始数据,而不是聚合数据。如果你在一个hypermeter中有2亿个事件,并且想要某个传感器几年的数据,可能需要很长时间才能得到结果,而用户不想等那么久。鉴于Timescale引入了percentile_agg和approx_percentile,我们实际上可以查询连续聚合并获得相当准确的百分位数值,而无需查询原始数据。请注意,“vehicles”是一个超表,其中actibump_id是具有数亿条记录的动态减速带的ID。以下是我们构建连续聚合的方法:CREATEMATERIALIZEDVIEWview1WITH(timescaledb.continuous)ASSELECTactibump_id,timescaledb_experimental.time_bucket_ng(INTERVAL'1month',time,'UTC')ASbucket,percentile_agg(vehicle_speed_initialY)ASROMpercentile_aghicglesROactibump_id,bucket这是为了获取数据的查询:SELECTTIMESCALEDB_EXPERIMENTAL.TIME_BUCKET_NG(INTERVAL'1month',bucket)ASdate,actibump_id,APPROX_PERCENTILE(0.85,ROLLUP(PERCENTILE_AGG))ASp85,MAX(signpost_speed_max)FROMvehicles_monthWsummary_1('16060022')ANDbucket>='2021-01-3023:00:00'ANDbucket<='2022-04-0821:59:59'GROUPBYdate,actibump_idORDERBYdateASC这是图表示例:目前我们使用PHP和Yii2来部署TimescaleDB。我们使用QlikSense连接到TimescaleDB进行业务分析。在QlikSense中,您可以使用PostgreSQL集成轻松连接到TimescaleDB。能够连接到长期数据的连续聚合而不会使系统因过多的原始数据而超载尤其方便。我们经常使用QlikSense制作图表原型,然后将其添加到Edevalive。建议和资源我们的下一步是想出一个减少存储在TimescaleDB中的原始数据量的好方法。我们正在研究如何将其与数据湖集成。此外,我们很高兴开始构建更多图形和地图应用程序。如果打算存储时序数据,建议考虑使用Timescale。用户很容易上手,因为它“是”SQL;同时获得使用时间序列数据所需的重要功能。建议大家关注一下,尤其是连续聚合。开始时,请考虑整个生命周期。用例是否允许您使用压缩等功能,或者您是否需要考虑如何在TimescaleDB之外存储长期数据以确保成本合理?你总是可以一路弄清楚事情,但最好在开始计划之前弄清楚这一点。原标题:AnaTavares和JohnEskilsson着:Edeva如何使用连续聚合和物联网构建智慧城市