设备状态数据存储到时序数据库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数据查询面板中查看刚刚设备上报的数据
物可视大屏展示
使用物可视大屏将设备数据汇总显示,关于物可视的使用请阅读物可视相关文档,此处我们直接展示本次基于单台设备通过拖拉拽零代码实现的大屏效果,更多效果可以进一步发掘