本文以使用官方示例驱动的LightSensor设备为例,讲述如何筛选设备上报到云端的数据。
前提条件
背景信息
通常情况传感器等设备会持续不断的上报采集到的数据,如温度计上报温度值、光照度传感器上报光照度等,这些数据往往差异不大,我们通常只关注部分超出阈值的数据。物联网边缘计算提供,使用边缘函数计算进行设备上云数据筛选功能可以减少设备数据上云的数量,从而减少云端的成本。
本文中以LightSensor设备为例,因此在使用函数计算处理数据前,您可以在物联网平台控制台左侧导航栏单击设备管理 > 设备,找到LightSensor设备,单击设备名称后的查看,进入设备详情页面的物模型数据 > 运行状态页签,查看设备状态。

上图中,单击查看数据,可以看到数值在100~600(以±100倍数的规律变化)之间不断变化,每隔2秒的高频率上报一次数据,日积月累会产生一些不必要的费用。因此可以使用函数计算来处理设备上报云端的数据,即对数据进行筛选。
一、创建数据筛选函数
- 下载设备数据筛选函数deviceDataFilter.zip。该函数用于筛选LightSensor设备上报的光照度数据,仅当光照度值大于500或小于200时,才将数据上报给云端。
- 登录阿里云函数计算控制台。
如尚未开通该服务,请阅读并勾选我已阅读并同意内容,单击立即开通,开通服务。
- (可选)左侧导航栏单击服务-函数,在新建函数后的下拉框中选择新建服务,根据界面提示配置参数后,单击创建创建一个服务。
其中,服务名称必须填写,此处设置为EdgeFC,其余参数可根据您的需求设置,也可以不设置。说明 若已操作过其他应用场景示例或小程序示例,即已创建EdgeFC服务,则无需重复创建。
- 创建服务成功后,在服务-函数页面单击新建函数,并使用事件函数方式创建函数。
- 设置数据筛选函数的基础管理配置参数。
参数 描述 所在服务 选择已创建的EdgeFC服务。 函数名称 设置为lightSensorDataFilter。 运行环境 设置函数的运行环境,此示例中选择nodejs8。 函数入口 使用默认值 index.handler
。函数执行内存 设置为512 MB。 超时时间 设置为10秒。 实例并发度 保持默认值。 其余参数的值请根据您的实际需求设置,也可以不设置。详情请参见函数计算。
确认函数信息后,单击完成。
- 创建函数完成后,系统自动跳转到函数详情页面。请在代码执行页签下选择代码包上传,单击选择文件,上传步骤1中下载的deviceDataFilter.zip代码包,然后单击保存。
代码包上传成功后,您可在在线编辑页签下查看源码。说明 您也可以通过服务-函数页面,单击函数名称,在函数详情页面代码执行页签下查看源码。说明 lightSensorDataFilter样例代码分为如下三步。
- 从收到的设备上报数据(event参数)中解析出光照度的数值。
var illuminance = iotData.getThingPropertyByEvent(event, "MeasuredIlluminance");
- 判断数据是否满足数据上云的筛选条件。
if (illuminance > 500 || illuminance < 200)
- 上报满足条件的数据。
iotData.publish(message, (err, data)=> {callback(err);});
- 从收到的设备上报数据(event参数)中解析出光照度的数值。
- (可选)调整数据过滤参数。
创建函数完成后,可以在线编辑代码,更改数据过滤条件。样例代码默认的数据过滤条件如下,表示将函数分配到边缘实例并部署实例后,函数只过滤设备收集到的光照度大于500或者小于200的数据,显示在设备的设备详情页面物模型数据 > 运行状态页签中。
if (illuminance > 500 || illuminance < 200)
您可以更改数据过滤条件为如下内容,表示将函数分配到边缘实例并部署实例后,函数只过滤设备收集到的光照度大于450的数据,显示在设备的设备详情页面物模型数据 > 运行状态页签中。if (illuminance > 450)
二、分配函数到边缘实例
- 登录物联网平台控制台。
- 在左侧导航栏单击边缘计算 > 应用管理。
- 使用步骤一中已创建的函数,创建函数计算类型的边缘应用。具体操作请参见函数计算应用。
应用信息参数说明如下:
参数 描述 应用名称 设置您应用的名称,例如lightSensorDataFilter。 应用类型 选择函数计算。 地域 选择您创建的服务所在的地域。 服务 选择EdgeFC服务。 函数 选择lightSensorDataFilter函数。 授权 选择AliyunIOTAccessingFCRole。 应用版本 设置应用的版本,必须是该应用唯一的版本号,即一个应用不可以设置两个相同的版本号。 函数配置区域框中,启用默认配置选择是,则其余参数无需设置。
- 左侧导航栏单击边缘计算 > 边缘实例。
- 在本文“前提条件”中完成的边缘实例右侧,单击查看。
- 在实例详情页面边缘应用页签,单击分配应用。
- 将已创建的数据筛选函数lightSensorDataFilter分配到边缘实例中,单击关闭。
三、配置消息路由
添加消息的详细步骤及各个参数的解释,详情请参见设置消息路由。
- 在实例详情页面,单击消息路由页签,移除该实例中已存在的设备路由到IoTHub的消息路由。
说明 在操作示例驱动内容创建LightSensor设备并分配到边缘实例时,为边缘实例配置了消息路由,请移除消息路由。
- 单击分配路由,添加LightSensor设备到函数计算的消息路由。
按照界面提示,设置如下参数,参数设置完成后,单击确定完成第一个路由的添加。
参数 描述 路由名称 设置一个消息路由名称。 消息来源 此处选择设备,选择光照度传感器 > LightSensor。 消息主题过滤 此处选择全部。 消息目标 此处选择函数计算和EdgeFC/lightSensorDataFilter函数。 - 在实例详情页面,单击设备与驱动页签,单击LightSensor设备后的查看,界面跳转到设备详情页面。
- 单击Topic列表 > 物模型通信 Topic页签,复制列表中第一条设备属性上报的Topic。
- 返回到实例详情页面,单击分配路由,添加函数计算到IoT Hub(云端)的消息路由。
按照界面提示,设置如下参数,参数设置完成后,单击确定完成第二个路由的添加。
参数 描述 路由名称 设置一个消息路由名称。 消息来源 此处选择函数计算和EdgeFC/lightSensorDataFilter函数。 消息主题过滤 此处填写上一步复制的设备属性上报的Topic。 消息目标 此处选择IoT Hub。 服务级别 此处选择0。
四、部署边缘实例
- 在实例详情页面,单击右上角部署后在弹出对话框中单击确定,将子设备、函数计算等资源下发到边缘端。
您可以通过单击部署详情来查看部署进度及结果。
- 在实例详情页面,单击设备与驱动页签,单击LightSensor设备后的查看,界面跳转到设备详情页面。
在设备详情页面,单击物模型数据 > 运行状态页签,查看LightSensor设备的运行状态以及数据。
至此您已经完整地体验了使用边缘函数计算实现设备上云数据筛选功能。