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

前提条件

背景信息

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

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

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

操作步骤

  1. 创建数据筛选函数。
    1. 下载设备数据筛选函数。该函数用于筛选LightSensor设备上报的光照度数据,仅当光照度值大于500或小于200时,才将数据上报给云端。
    2. 登录阿里云函数计算控制台
      如尚未开通该服务,请阅读并勾选我已阅读并同意内容,单击立即开通,开通服务。
    3. 单击服务列表后的“+”符号,根据界面提示配置参数后,单击确定创建一个服务。
      其中,服务名称必须填写,此处设置为EdgeFC,其余参数可根据您的需求设置,也可以不设置。
    4. 创建服务成功后,在服务概览页面单击函数列表后的“+”符号,创建函数,并选择空白函数模板。
    5. 触发器配置中,选择不创建触发器,单击下一步
    6. 设置数据筛选函数的基础管理配置参数。
      参数 描述
      所在服务 选择已创建的EdgeFC服务。
      函数名称 设置为lightSensorDataFilter
      运行环境 设置函数的运行环境,此示例中选择nodejs8
      代码配置 选择代码包上传,上传已下载的deviceDataFilter.zip代码包。

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

    7. 单击下一步,进入模板授权管理页面。此处无需设置,单击下一步
    8. 确认函数信息后,单击创建
      创建函数完成后,单击函数名称,可在代码执行页签下查看源码。
      在线编辑
      说明 lightSensorDataFilter样例代码分为三步:
      1. 从收到的设备上报数据(event参数)中解析出光照度的数值:
        var illuminance = iotData.getThingPropertyByEvent(event, "MeasuredIlluminance");
      2. 判断数据是否满足数据上云的筛选条件:
        if (illuminance > 500 || illuminance < 200)
      3. 上报满足条件的数据:
        iotData.publish(message, (err, data)=> {callback(err);});
    9. (可选)调整数据过滤参数。
      创建函数完成后,可以在线编辑代码,更改数据过滤条件。
      样例代码默认的数据过滤条件如下,表示将函数分配到边缘实例并部署实例后,函数只过滤设备收集到的光照度大于500或者小于200的数据,显示在设备的设备详情 > 运行状态页面中:
      if (illuminance > 500 || illuminance < 200)
      您可以更改数据过滤条件为如下内容,表示将函数分配到边缘实例并部署实例后,函数只过滤设备收集到的光照度大于450的数据,显示在设备的设备详情 > 运行状态页面中:
      if (illuminance > 450)
  2. 分配函数到边缘实例。
    1. 登录物联网平台控制台
    2. 左侧导航栏选择边缘计算 > 边缘实例
    3. 前提条件中完成的边缘实例右侧,单击查看
    4. 实例详情页面,选择函数计算,单击分配函数
    5. 根据界面提示设置参数,将已创建的数据筛选函数lightSensorDataFilter分配到边缘实例中。
      函数信息配置说明如下:
      参数 描述
      地域 选择您创建的服务所在的地域。
      服务 选择EdgeFC服务。
      函数 选择lightSensorDataFilter函数。
      授权 选择AliyunIOTAccessingFCRole
      函数配置说明如下:
      参数 描述
      运行模式 运行模式有两种。此处选择持续运行模式。程序部署后会立即执行。
      内存限制(MB) 函数运行可使用的内存资源上限,单位为MB。此处设置为512 MB。当函数使用内存超出该限制时,该函数计算程序会被强制重启。
      超时限制(秒) 函数收到事件后的最长处理时间,此处使用默认值5秒。如超过该时间函数仍未返回结果,该函数计算程序将会被强制重启。
      定时运行 使用默认配置:关闭

      其余参数无需配置。

    6. 单击确认,至此您已将数据筛选函数分配到边缘实例中。
  3. 添加消息路由。
    添加消息的详细步骤及各个参数的解释,请参考设置消息路由
    1. 实例详情页面,选择消息路由,删除该实例中已存在的设备路由到IoTHub的消息路由。
      说明 在操作示例驱动内容创建LightSensor设备并分配到边缘实例时,为边缘实例配置了消息路由,请删除消息路由。

      移除消息路由
    2. 单击添加路由,添加LightSensor设备到函数计算的消息路由。
      按照界面提示,设置如下参数,参数设置完成后,单击确定完成第一个路由的添加。
      参数 描述
      消息来源 此处选择设备,选择光照度传感器 > LightSensor
      消息主题过滤 此处选择全部
      消息目标 此处选择函数计算EdgeFC/lightSensorDataFilter函数。
    3. 实例详情页面,选择子设备,单击LightSensor设备后的查看,界面跳转到设备详情页面。
    4. 选择Topic列表页签,复制列表中第一条设备属性上报的Topic。

      获取设备topic列表
    5. 返回到实例详情页面,单击添加路由,添加函数计算到IoT Hub(云端)的消息路由。
      按照界面提示,设置如下参数,参数设置完成后,单击确定完成第二个路由的添加。
      参数 描述
      消息来源 此处选择函数计算EdgeFC/lightSensorDataFilter函数。
      消息主题过滤 此处填写上一步复制的设备属性上报的Topic。
      消息目标 此处选择IoT Hub
      服务级别 此处选择0
  4. 部署边缘实例并查看设备的运行结果。
    1. 实例详情页面,单击右上角部署后在弹出框中单击确定,将子设备、函数计算及消息路由下发到边缘端。
      您可以通过单击部署详情来查看部署进度及结果。
    2. (可选)在实例详情 > 监控信息页面,选择函数计算,查看已分配到边缘实例的函数计算监控信息。
      单击函数名称对应操作栏中的查看,查看详细的监控信息。
      查看函数监控信息
    3. 实例详情页面,选择子设备,单击LightSensor设备后的查看,界面跳转到设备详情页面。
      设备详情页面查看LightSensor设备的运行状态以及数据。
      查看设备数据

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