写点什么

物联网核心套件 IoTCore:设备状态数据存储到时序数据库 TSDB

  • 2023-04-06
    北京
  • 本文字数:1961 字

    阅读完需:约 6 分钟

物联网核心套件IoTCore:设备状态数据存储到时序数据库TSDB

简介

本文档介绍如何将设备上报的状态数据通过规则引擎存储到时序数据库 TSDB 中,应用程序可以从 TSDB 中查询设备的历史状态数据。

阅读本示例前建议先熟悉快速入门文档。

场景描述

该场景演示物联网应用场景中常用的功能,包括设备接入、数据上报、数据存储、数据查询展示等。

  • 数据上报

温湿度传感器可以周期上报当前环境温度(temperature)和湿度(humidity)

此例中我们使用 MQTT.fx 模拟设备进行数据上报

  • 数据存储

设备上报的状态数据自动存储到 TSDB 中,应用程序通过查询数据库获取历史温湿度数据进行展示和分析。

  • 数据展示

数据存储到 TSDB 中以后,通过物可视读取 TSDB 数据,大屏展示温湿度信息。

操作步骤

创建设备

创建 IoT Core 实例

点击 IoT Core 实例列表页的「创建 IoT Core」按钮,填写名称后点击「提交」。



创建成功后新建实例会在列表中显示



创建设备模板

在列表中点击 IoT Core 实例名称,进入详情页,选择左侧「设备模板」菜单



点击「添加模板」,填写模板信息后提交,创建名称为 th_sensor 的设备模板,创建成功后可在模板列表中查看



在列表中点击刚刚创建的设备模板,进入设备模板详情页,可以看到平台预置的两个 topic,其中 deviceName 为占位符,实际设备中使用设备的名称进行替换



添加设备

点击左侧「设备列表」菜单,在设备列表页点击「新增设备」添加设备



添加名称为 testdevice01 的设备,认证方式勾选「密钥认证」,选择上一步创建的 th_sensor 设备模板,提交完成设备创建



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



生成设备连接信息

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



注:

  • 时间戳设置为 0,即不校验时间戳

  • IoTCoreId 可详情页右上角接入地址中获得



配置规则引擎

创建规则

点击左侧「规则引擎」菜单,进入规则引擎列表页,点击「创建规则」,创建一个规则



提交后,可在列中查看

配置规则

点击规则列表最后的「编辑调试」,配置规则



设置数据来源 topic 为 $iot/+/events(接收设备上报的状态消息)



来源地添加完毕后,点击「添加目的地」,选择目的地类型为「时序数据库 TSDB」,区域为「华南-广州」,选择已经创建好的 TSDB 实例,如尚未创建数据库实例可点击「创建时序数据库」按钮,进行创建,创建成功后返回此页面点击「数据库名称」右侧的刷新按钮后可显示



编写查询语句



此实践中我们使用示例消息如下:

参考此实践测试调试时,注意修改 lastupdate 的值为当前最新时间

  • 如果使用 MQTT.fx 模拟设备,将 lastupdate 取值替换为当前时间的 13 位毫秒时间戳(快速获取时间戳

  • 如果使用程序模拟设备,则建议使用程序的 time 函数获取当前系统时间戳

{    "reqId":"442c1da4-9d3a-4f9b-a6e9-bfe858e4ac43",    "method":"thing.event.post",    "lastupdate":1465376157007,    "properties":{        "temperature":35,        "humidity":25    }}
复制代码

查询语句配置为:

此实践中采用了最基本的查询语句直接将设备上报消息对应的字段赋值给目标数据格式,实际使用时规则引擎支持使用遍历语法将设备上报的批量属性数据批量转化为 TSDB 接受的格式,可参考常用查询语句示例

{ "datapoints": [    {     "metric": "temperature",     "tags": {            "devicename": "testdevice01",            "product": "th_sensor"             },     "timestamp": lastupdate,     "value": properties.temperature    },    {     "metric": "humidity",     "tags": {             "devicename": "testdevice01",            "product": "th_sensor"             },     "timestamp": lastupdate,     "value": properties.humidity    }] }
复制代码

注:实际使用中 devicename 替换为实际的设备名称,一般设备名称从消息或主题中查询获得,更多查询语法可参考数据查询语法和函数

保存配置信息,保存后会进入规则详情页,可检查规则配置是否正确,点击左上角返回按钮,返回到规则列表页



启动规则

在列表页点击规则右侧的「启动」按钮,启动规则



模拟设备上报温湿度状态数据

配置 MQTT.fx

在 MQTT.fx 中填写之前生成的 MQTT 连接信息并保存



返回连接页面,设备连接上线



设备上报消息

设置上报消息 topic 为 $iot/testdevice01/events,并发布如下消息

{    "reqId":"442c1da4-9d3a-4f9b-a6e9-bfe858e4ac43",    "method":"thing.event.post",    "lastupdate":1465376157007,    "properties":{        "temperature":35,        "humidity":25    }}
复制代码

注意:此处消息格式必须为 TSDB 写入接口支持的数据格式,具体格式要求可参考《TSDB数据API接口说明



在 TSDB 中查询/查看设备数据

在 TSDB 数据查询面板中查看刚刚设备上报的数据




物可视大屏展示

使用物可视大屏将设备数据汇总显示,关于物可视的使用请阅读物可视相关文档,此处我们直接展示本次基于单台设备通过拖拉拽零代码实现的大屏效果,更多效果可以进一步发掘



发布于: 刚刚阅读数: 3
用户头像

关注百度开发者中心,收获一手技术干货。 2018-11-12 加入

汇聚百度所有对外开放技术、平台和服务资源,提供全方位支持,助力开发者加速成功,实现开发者、消费者和百度三方共赢。https://developer.baidu.com/

评论

发布
暂无评论
物联网核心套件IoTCore:设备状态数据存储到时序数据库TSDB_物联网_百度开发者中心_InfoQ写作社区