本文以使用官方示例驱动的LightSensor设备为例,讲述如何筛选设备上报到云端的数据。

前提条件

  • 请您确保已完成边缘实例的创建。具体操作步骤,请参见专业版环境搭建标准版环境搭建
  • 创建光照度传感器产品以及该产品下的LightSensor设备,并将LightSensor设备分配至边缘实例。具体操作步骤,请参见示例驱动

背景信息

通常情况传感器等设备会持续不断的上报采集到的数据,如温度计上报温度值、光照度传感器上报光照度等,这些数据往往差异不大,我们通常只关注超出阈值的数据。物联网边缘计算提供边缘函数计算,进行设备上云数据筛选,可以减少设备数据上云的数量,从而减少云端的成本。

本文中以LightSensor设备为例,因此在使用函数计算处理数据前,您可以在物联网平台控制台左侧导航栏选择设备管理 > 设备,找到LightSensor设备,单击设备名称后的查看,进入设备详情页面的物模型数据 > 运行状态页签,查看设备状态。查看设备数据

上图中,单击查看数据,可以看到数值在100~600之间,以100倍数的规律不断变化,且以每隔2秒的高频率上报一次数据,日积月累会产生一些不必要的费用。因此可以使用函数计算来处理设备上报云端的数据,即对数据进行筛选。

步骤一:创建数据筛选函数

  1. 下载设备数据筛选函数deviceDataFilter.zip。该函数用于筛选LightSensor设备上报的光照度数据,仅当光照度值大于500或小于200时,才将数据上报给云端。
  2. 登录函数计算控制台
    如尚未开通该服务,请阅读并选中我已阅读并同意,单击立即开通,开通服务。
  3. (可选)在左侧导航栏单击服务及函数,在服务及函数页面服务列表区域,单击新增服务,创建一个服务。
    其中,服务名称必须填写,此处设置为EdgeFC,其余参数可根据您的需求设置,也可以不设置。
    说明
    • 若您首次在函数计算中创建服务,请根据配置向导配置参数。
    • 若已操作过其他应用场景示例或小程序示例,即已创建EdgeFC服务,则无需重复创建。
  4. 创建服务成功后,在服务与函数页面的EdgeFC区域,单击新增函数
  5. 新建函数页面,单击事件函数区域中的配置部署
  6. 设置数据筛选函数的基础管理配置参数。
    参数 描述
    函数类型 保持默认选项。
    所在服务 选择已创建的EdgeFC服务。
    函数名称 设置为lightSensorDataFilter
    运行环境 设置函数的运行环境并选择上传代码的方式。此示例中选择Node.JS 8.x

    上传代码右侧选择上传代码包,单击上传代码,上传步骤1中下载的deviceDataFilter.zip代码包。

    函数入口 使用默认值index.handler

    其余参数的值请根据您的实际需求设置,也可以不设置。更多信息,请参见函数计算

    确认函数信息后,单击新建完成操作。

  7. 创建函数完成后,系统自动跳转到函数详情页面。您可在代码执行页签的代码执行管理区域下,选中在线编辑单选框,查看源码。
    在线编辑
    说明 lightSensorDataFilter样例代码分为如下三步。
    1. 从收到的设备上报数据(event参数)中解析出光照度的数值。
      var illuminance = iotData.getThingPropertyByEvent(event, "MeasuredIlluminance");
    2. 判断数据是否满足数据上云的筛选条件。
      
      if (illuminance > 500 || illuminance < 200)
    3. 上报满足条件的数据。
      iotData.publish(message, (err, data)=> {callback(err);});
  8. (可选)调整数据过滤参数。
    创建函数完成后,可以在线编辑代码,更改数据过滤条件。
    样例代码默认的数据过滤条件如下,表示将函数分配到边缘实例并部署实例后,函数只过滤设备收集到的光照度大于500或者小于200的数据,显示在设备的设备详情页面物模型数据 > 运行状态页签中。
    if (illuminance > 500 || illuminance < 200)
    您可以更改数据过滤条件,例如函数只过滤设备收集到的光照度大于450的数据,则将数据过滤参数改为如下内容:
    if (illuminance > 450)

步骤二:分配函数到边缘实例

  1. 登录边缘计算控制台
  2. 在左侧导航栏单击应用管理
  3. 使用步骤一中已创建的函数,创建函数计算类型的边缘应用。具体操作,请参见函数计算应用

    应用信息参数说明如下:

    参数 描述
    应用名称 设置您应用的名称,例如lightSensorDataFilter
    应用类型 选择函数计算
    地域 选择您创建的服务所在的地域。
    服务 选择EdgeFC服务。
    函数 选择lightSensorDataFilter函数。
    授权 选择AliyunIOTAccessingFCRole
    应用版本 设置应用的版本,必须是该应用唯一的版本号,即一个应用不可以设置两个相同的版本号。

    函数配置区域框中,启用默认配置选择,则其余参数无需设置。

  4. 在左侧导航栏单击边缘实例
  5. 在本文“前提条件”中创建的边缘实例右侧,单击查看
  6. 实例详情页面的边缘应用页签,单击分配应用
  7. 分配应用面板,找到已创建的数据筛选函数lightSensorDataFilter,单击对应操作栏中的分配,然后单击关闭

步骤三:配置消息路由

添加消息的详细步骤及各个参数的解释。详细信息,请参见设置消息路由

  1. 实例详情页面,单击消息路由页签,移除该实例中设备路由到IoTHub的消息路由。
    说明 在操作“前提条件”中的示例驱动内容,创建LightSensor设备并分配到边缘实例时,为边缘实例配置了消息路由,因此需要在此步骤移除该消息路由。
    移除消息路由
  2. 单击分配路由,添加LightSensor设备到函数计算的消息路由。
    按照界面提示,设置如下参数,参数设置完成后,单击确定完成第一个路由的添加。
    参数 描述
    路由名称 设置一个消息路由名称。
    消息来源 此处选择设备,选择光照度传感器 > LightSensor
    消息主题过滤 此处选择全部
    消息目标 此处选择边缘应用EdgeFC/lightSensorDataFilter函数。
  3. 实例详情页面,单击设备与驱动页签,单击LightSensor设备后的查看,界面跳转到设备详情页面。
  4. 单击Topic列表 > 物模型通信 Topic页签,复制列表中第一条设备属性上报的Topic。
    获取设备topic列表
  5. 返回到实例详情页面,单击分配路由,添加函数计算到IoT Hub(云端)的消息路由。
    按照界面提示,设置如下参数,参数设置完成后,单击确定完成第二个路由的添加。
    参数 描述
    路由名称 设置一个消息路由名称。
    消息来源 此处选择函数计算EdgeFC/lightSensorDataFilter函数。
    消息主题过滤 此处填写上一步复制的设备属性上报的Topic。
    消息目标 此处选择IoT Hub
    服务级别 此处选择0

步骤四:部署边缘实例

  1. 实例详情页面,单击右上角部署后,在弹出对话框中单击确定,将子设备、函数计算等资源下发到边缘端。
  2. 实例详情页面,单击设备与驱动页签,然后单击LightSensor设备后的查看,系统会跳转到物联网平台控制台设备详情页面。
    设备详情页面,单击物模型数据 > 运行状态页签,查看LightSensor设备的运行状态以及数据。查看设备数据

    至此您已经完整地体验了使用边缘函数计算实现设备上云数据筛选功能。