智能边缘BIE

    操作指南

    在上文中描述了边缘流式计算的典型应用场景。本文介绍如何使用边缘流式计算。

    模拟场景描述

    1. 使用模拟器每秒1条数据的频率,不间断往边缘hub发送模拟数据
    2. 模拟数据的格式为: {"humidity":6.3426914,"temperature":11.457714,"timestamp":1576207523}
    3. 云端配置边缘流式计算任务,计算temperature的统计值,包括:

      • 10分钟平均值
      • 10分钟最大值
      • 10分钟最小值
      • 10分钟计算样本数
    4. 下发边缘流式计算任务至边缘核心设备
    5. 订阅边缘hub,验证流式计算结果

    前提准备

    • 有一个百度智能云账号,如果没有,点此注册
    • 开通百度智能边缘BIE服务,点此开通
    • 有一个树莓派,本实验用的是 Raspberry Pi 4,也可以使用树莓派的其他型号(Raspberry Pi 3 Model B+),或者使用Ubuntu16.04的虚拟机
    • 树莓派已连接云端BIE,配置流程可参考 快速入门
    • 有一个数据模拟器应用,本文将提供在本教程当中使用的数据模拟器应用。如果用户具有开发能力,可以简单修改baetyl-timer即可实现一个边缘数据模拟器应用

    通过本教程你将会学习

    1. 数据模拟器应用配置
    2. 边缘流式计算配置

    配置指南

    除了用于连接BIE云管管理套件的agent模块,还需要配置3个模块,如下图所示:

    image.png

    各模块功能描述如下:

    1. localhub:边缘侧本地MQTT Broker,本地数据交互中心
    2. temperature-simulator-2:数据模拟器模块,不间断发送模拟数据至localhub。模拟数据格式如下:

      {
          "humidity":36.97492,
          "temperature":92.05849,
          "timestamp":1576215005
      }
    3. statistics_1min_temperature:流式计算任务模块,实时订阅localhub的数据,对订阅到的流式数据进行计算,并将结算的结果返回给localhub模块。流式计算返回的数据格式如下:

      {
          "avg_temp":55.232093,
          "count_temp":60,
          "max_temp":97.903465,
          "min_temp":2.287275,
          "ts":1576214940000
      }

    模块间数据流图

    creek-process.png

    模块1:localhub

    localhub配置如下图所示:

    image.png

    image.png

    • 需要添加1883:1883的端口映射
    • conf为 baetyl模块配置
    • data、log为 空目录存储卷

    mt-localhub-conf配置如下:

    listen:
      - 'tcp://0.0.0.0:1883'
    principals:
      - username: test
        password: hahaha
        permissions:
          - action: pub
            permit:
              - '#'
          - action: sub
            permit:
              - '#'
    logger:
      path: var/log/baetyl/localhub-service.log
      level: debug

    模块2:temperature-simulator-2

    首先进入【智能边缘——>模块列表】,点击创建模块,如下图所示:

    image.png

    • 名称:temperature-simulator
    • 镜像地址:

      • armv7l: hub.baidubce.com/intelliedge/temperature-simulator:2.0
      • amd64(x86): hub.baidubce.com/intelliedge/temperature-simulator:3.0
      • arm64: hub.baidubce.com/intelliedge/temperature-simulator:4.0

    进入【智能边缘——>核心列表——>核心详情】,点击添加服务,temperature-simulator-2的配置如下图所示:

    image.png

    image.png

    • conf为 baetyl模块配置
    • log为 空目录存储卷

    timer-conf配置如下:

    hub:
      address: 'tcp://localhub:1883'
      username: test
      password: hahaha
      clientid: timer-1
    timer:
      # 指定数据发送间隔
      interval: 1s
    publish:
      # 指定发送到hub的topic
      topic: testtopic/update
    logger:
      path: var/log/baetyl/service.log
      level: debug
    • hub:作为mqtt client连接localhub
    • interval: 1s :每秒发送一次模拟数据
    • topic: testtopic/update:模拟数据发送至此topic,流式计算任务会订阅此topic

    模块3:statistics_1min_temperature

    边缘流式计算的配置主要分为两步,分别为 创建边缘流式计算任务边缘核心添加流式计算服务

    step1: 创建边缘流式计算任务

    创建数据源

    进入【规则引擎——>实时计算——>数据源列表】,点击创建数据源,如下图所示:

    image.png

    image.png

    • 运行环境:此处需要创建边缘流式计算任务,所以选择边缘
    • 名称:数据源名称,此处填写src_data
    • 类型:MQTT
    • 属性:

      • 服务器:tcp://localhub:1883,为localhub模块的连接地址
      • 主题:testtopic/update,数据模拟器产生的模拟值发送到此topic,流式计算任务需要订阅此topic的数据进行计算
      • 用户名、密码:需要与localhub配置的principals一致
    • 格式:Json
    • 字段:字段可以选择 从JSON中识别,JSON格式在模拟场景描述当中已给出
    • 消息自带时间戳:选择
    • 时间戳字段:使用原始数据当中时间戳字段,此处为timestamp,在上述字段处可以找到。
    • 水印:使用默认值,2秒

    创建数据目的地

    进入【规则引擎——>实时计算——>数据目的地列表】,点击创建数据目的地,如下图所示:

    image.png

    • 运行环境:边缘
    • 名称:数据目的地名称,此处填写target_data
    • 类型:MQTT
    • 属性:

      • 服务器:tcp://localhub:1883,为localhub模块的连接地址
      • 主题:testtopic/streamdata,流式计算结果需要返回的topic,可以通过订阅此topic查看流式计算结果
      • 用户名、密码:需要与localhub配置的principals一致
    • 格式:Json

    创建任务

    进入【规则引擎——>实时计算——>任务列表】,点击创建任务,如下图所示:

    image.png

    • 运行环境:边缘
    • 名称:任务名称,此处填写 statistics_1min_temperature
    • 时间类型:EVENTTIME,表示使用数据自带的时间戳,与数据源配置一致
    • 并发度:默认值,1
    • SQL:
    INSERT INTO target_data
    SELECT
          TUMBLE_START(rowtime, INTERVAL '1' MINUTE) AS ts,
          MAX(temperature) AS max_temp,
          MIN(temperature) AS min_temp,
          AVG(temperature) AS avg_temp,
          COUNT(temperature) AS count_temp
    FROM src_data
    GROUP BY
          TUMBLE(rowtime, INTERVAL '1' MINUTE)

    配置完毕以后,可以打开调试模式进行验证,如下图所示:

    image.png

    • 在src_data处输入如下4行json:
    {"humidity":36.97492,"temperature":92.05849,"timestamp":1576215005}
    {"humidity":8.728794,"temperature":9.086535,"timestamp":1576215004}
    {"humidity":37.186928,"temperature":34.015495,"timestamp":1576215003}
    {"humidity":5.9257016,"temperature":46.55856,"timestamp":1576215002}
    • 点击测试运行,得到如下结果,表示流式计算SQL配置正确。
    {"ts":1576215000000,"max_temp":92.05849,"min_temp":9.086535,"avg_temp":45.429770000000005,"count_temp":4}

    step2: 边缘核心添加流式计算服务

    添加流式计算服务

    进入【智能边缘——>核心列表——>核心详情】,在核心详情界面,点击添加服务,选择流式计算模块,如下图所示:

    image.png

    • 服务类型: 流式计算模块
    • 任务:在下拉框当中选择之前创建的边缘流式计算任务,statistics_1min_temperature
    • 服务名称:使用默认值statistics_1min_temperature
    • 流式计算模块使用系统默认存储卷,不需要用户在手动配置存储卷。

    更新流式计算服务

    当流式计算任务发生变更后,再点击查看流式计算服务时,会自动监测到有更新,并提示用户是否更新,如下图所示。

    image.png

    验证边缘流式计算结果

    检查服务启动状态

    在模块配置完毕以后,将配置发布为正式版本,然后执行下发操作,如下图所示:

    image.png

    第一次下发,边缘核心设备需要下载镜像,需要几分钟所有服务才能够启动完毕,可以在云端实时查看服务状态,如下图所示:

    image.png

    也可以远程登录到树莓派,通过docker ps命令查看服务启动情况,如下图所示:

    image.png

    检查流式计算结果

    启动MQTTBox,订阅testtopic/updatetesttopic/streamdata这两个topic,查看数据模拟器产生的模拟数据,以及基于模拟数据进行流式计算得到的结果,如下图所示:

    image.png

    • testtopic/update:模拟数据,1秒1条记录
    • testtopic/streamdata:流式计算结果,包含最大值、最小值、平均值、计算样本数,因为是1分钟统计结果,所以计算样本数刚好是60,与实际相符
    上一篇
    应用场景概述
    下一篇
    配置文件说明