上云无忧 > 文档中心 > 百度智能云物联网核心套件 IoT Core 实践 - 数据转发到函数计算服务CFC
物联网核心套件 IoT Core
百度智能云物联网核心套件 IoT Core 实践 - 数据转发到函数计算服务CFC

文档简介:
一、简介: 在本教程中,您将学习到如何将 IoT Core 的设备消息通过「规则引擎」转发至「函数计算 CFC」,并通过「函数计算 CFC」进行用户自定义的数据处理。
*此产品及展示信息均由百度智能云官方提供。免费试用 咨询热线:400-826-7010,为您提供专业的售前咨询,让您快速了解云产品,助您轻松上云! 微信咨询
  免费试用、价格特惠

一、简介

在本教程中,您将学习到如何将 IoT Core 的设备消息通过「规则引擎」转发至「函数计算 CFC」,并通过「函数计算 CFC」进行用户自定义的数据处理。

二、应用场景描述

规则引擎可以做到海量数据的过滤、变型和转发,但当您对设备数据处理有着更负复杂,更个性化的处理需求时,仅仅使用规则引擎可能无法满足全部需求,但可以结合「函数计算 CFC」来满足相关处理需求。通过将「规则引擎」与「函数计算 CFC」的组合,数据的处理将会变得更加灵活多样。主要应用场景包括:

  1. 进行复杂场景的数据处理。
  2. 存储设备日志信息。
  3. 转发设备消息到用户自定义服务。

三、示例场景描述

为了带您深入了解「规则引擎」与「函数计算 CFC」的组合使用方式,将采用一个简单的示例:

  • 规则引擎将设备产生的系统日志转发到 CFC。
  • CFC 对接受到的日志消息进行解码,并将消息内容存储到对象存储 BOS 中。

操作步骤如下:

  1. 创建对象存储 BOS 实例。
  2. 创建函数计算 CFC 实例,并配置 BOS 为日志存储目的地。
  3. 创建 IoT Core 实例,创建转发规则。
  4. 验证设备日志转发存储功能。

四、操作步骤

4.1 创建 BOS 实例

具体方式请参考《对象存储 BOS 创建Bucket》

登录对象存储 BOS 管理控制台。点击左侧导航栏 " Bucket 列表",在 Bucket 列表中找到并点击 + 按钮( “ 新建 Bucket ” 按钮),在弹出框中按照提示创建 Bucket。

点击「确定」后,该 Bucket 创建完成。

4.2 创建 CFC 实例并配置目的地

选择创建空白函数。

在「函数配置」中,选择「对象存储 BOS」作为日志存储,日志存储路径自行定义。

「触发器」选择无。

因为规则引擎会将消息内容以 Base64 编码后发送给CFC,详情请参考《转发到函数 CFC》。所以,当我们需要在 CFC 中获取规则引擎传输的数据时,需要进行如下两个步骤:

1.将event['message']中的消息进行base64解码。

2.根据 Protocol Buffers 的描述文件,将解码后的数据转换为对象。

在本教程中,函数计算 CFC 函数运行时采用 Python3.6,其功能为:将设备数据解码并打印 log。

Python 函数程序参考代码如下:

import base64
import time
from google.protobuf import json_format
import json
import MqttLogConstants_pb2 as MqttLog
from TrafficLogEntry_pb2 import TrafficLogEntries
import logging
logging.basicConfig()
logger = logging.getLogger()
logger.setLevel(logging.INFO)

# 解码 byte 数据,转化为 log 对象
def parse_log_entries(bytes):
    entries = TrafficLogEntries()
    entries.ParseFromString(bytes)
    return entries

# CFC 函数入口
def handler(event, context):
    # 进行base64解码
    logBytes=base64.b64decode(event['message'])
    # 解码 byte 数据,转化为 log 对象
    logEntries = parse_log_entries(logBytes)
    for entry in logEntries.entries:
        if entry.code.startswith('MQT'):
            entryJson = json.loads(json_format.MessageToJson(entry))
            details = entryJson['details']
            newDetails = {}
            for keyNum in details:
                detail = MqttLog.LogDetailKey.Name(int(keyNum))
                newDetails[detail] = details[keyNum]
            entryJson['details'] = newDetails
            # 将解码结果作为日志打印
            logger.info(entryJson)
    return None

上传 Python 函数程序处理包。

4.3 创建 IoT Core 实例并配置规则引擎

4.3.1 创建 IoT Core 实例

进入控制台,点击「创建 IoT Core」。

信息填写完成后点击「提交」。

创建完成后,实例将显示在实例列表中。

4.3.2 添加模板

点击设备管理中的模板菜单,点击「添加模板」进行模板添加。

填写「模板名称」,点击「确认」。

确认后,创建名为 fortest 的设备模板,可在模板列表中查看。

4.3.3 添加设备

点击「新增设备」创建设备。

认证方式选择「秘钥认证」,模板选择上述步骤创建的模板「fortest」,并提交。

创建成功后会显示设备的密钥,点击「下载」保存密钥记录文本。

4.3.4 生成连接信息

为了连接设备,需要使用 MQTT连接信息生成器 生成设备的连接鉴权信息,记录下「结果(MQTT连接信息)」备用。

请保存「设备连接鉴权信息」,权信息将会在「步骤4.4」中使用。

4.3.5 配置规则引擎

进入物联网核心套件控制台,找到实例下的「规则列表」,点击「创建规则」进行规则的创建。

输入规则信息后,点击「确认」即可创建规则。

点击「编辑调试」,进入编辑界面。

编辑规则的「输入来源」,点击 topic 模板。

当设备连接、监听、断开时,日志数据会记录在$sys/log/info/#中

设备模板选择 「SYS_LOG_TOPIC」 ,可选 topic 选择「$sys/log/info/#」。

点击「规则目的地」。

选择 「函数计算 CFC」作为目的地,函数选择 Python 程序对应的函数,并点击「保存」。

规则保存成功后,进入规则列表,启动规则,规则处于「运行中」状态时,表示规则正在生效。

4.4 验证设备日志转发存储功能

经过上述步骤的操作,环境已经搭建完毕,设备消息可以经过规则引擎转发到 CFC,CFC会将产生的日志信息存储到 BOS 中。

将「步骤4.3.4」生成的连接鉴权信息填写到 MQTT 客户端中,点击「connect」。

观察 CFC 中的「日志」,发现数据已成功接收并转码。

上图 INFO 级别的日志,正是 Python 函数程序中的打印的 log。

查看 BOS,可查看到日志文件,设备日志信息存储完成,验证完成。

相似文档
  • 一、简介: 在本教程中,您将学习到如何将 IoT Core 的设备消息通过『规则引擎』转发至不同账户下的百度消息服务 BMS 实例,可以实现跨账 户消息转发等需求。本文主要包括简介、场景描述、注意事项、操作步骤 4 部分内容,通过具体示例展示了相关使用流程。
  • Q:我的物接入IoT Hub还能使用吗? A:物接入将于2022年10月31日下线。可参考迁移手册进行迁移:IoT Hub/规则引擎迁移指导手册 Q:物联网核心套件是什么? A:物联网核心套件IoT Core是提供设备接入、管理、规则引擎、IoT边缘能力的物联网服务集合。服务范围大致相当于原IoT Hub数据型+设备型+规则引擎+边缘计算中物联网部分。
  • Q:请问是否有基于FreeRTOS或者RTX操作系统的MQTT SDK源码? A:我们提供了 C 的 SDK https://github.com/baidu/iot-sdk-c 另外也可以选择 paho 的开源版本,提供了多个版本的C/C++ client,有的是支持posix标准的(unix、linux、windows),有的是支持嵌入式系统的。可以参考这个连接:https://www.eclipse.org/paho/clients/c/embedded/
  • 本服务等级协议(Service Level Agreement,以下简称 "SLA")规定了百度智能云向客户提供的物联网核心套件(IoT Core)的服务可用性等级指标及赔偿方案。
  • IoT Hub/规则引擎迁移指导手册: 物接入 IoT Hub (含物解析类型的 IoT Hub 实例)及配套的老版本规则引擎产品整体也将于2022年10月31日正式停止服务,你可选择使用物联网核心套件 IoT Core 下对应能力提供服务。
官方微信
联系客服
400-826-7010
7x24小时客服热线
分享
  • QQ好友
  • QQ空间
  • 微信
  • 微博
返回顶部