关于时序库保存数据以及流程

Blade 未结 2 282
9787959
9787959 剑圣 2025-08-12 10:41

一、该问题的重现步骤是什么?

1. 我想要将自定义的mqtt的topic和数据格式实时保存到时序库中 需要怎么做

2. 时序库的保存查询是怎么触发的

3.我想知道整个从mqtt到时序库以及数据库再到页面的流程


二、你期待的结果是什么?实际看到的又是什么?


三、你正在使用的是什么产品,什么版本?在什么操作系统上?


四、请提供详细的错误堆栈信息,这很重要。


五、若有更多详细信息,请在下面提供。

2条回答
  • 2025-08-12 11:20

    自定义topic可以看这里:https://iot.bladex.cn/feature/link/topic.html


    写入逻辑可以看这里:

    CleanShot20250812111839@2x.png


    时序库写入的核心就是注入个统一的接口,调用save方法就行了

    CleanShot20250812111911@2x.png


    时序库更多的介绍看这里:https://iot.bladex.cn/tech/prologue/tsdb/tsdb.html


    作者追问:2025-08-12 11:42

    怎么发你文档

    0 讨论(0)
  • 2025-08-12 11:28

    没有保存到数据是怎么回事呢?还有就是topic的转换 你写的也不全 我的topic是这个CarIO/<Group_ID>/<Device_ID/SensorData,数据格式是这个 

    {

    "DataType":"SensorData",

    "AxleData":

    {

    "AXLE1":{

    "Adc_L":"<raw_data_1>",

    "Weight_L":"<weight_1>",

    "Adc_R":"<raw_data_2>",

    "Weight_R":"<weight_2>",

    "":""

    },

    "AXLE2":{

    },

    "AXLEn":{

    }

    }

    "Location":

    {

    "Latitude":"<latitude>",

    "Longitude":"<longitude>"

    }

    "TimeStamp":<current_time>

    }

    能保存么 怎么触发的呢 我需要mq直接上数据触发呢 保存那张表单

    作者追问:2025-08-12 11:37

    这个不是标准的格式,请问设备有相关的文档么?发我们看下,如果不是标准的mqtt协议报文,那就需要通过边缘网关来解析后转发到平台了。

    如果用了边缘网关,就不需要你们去修改代码改topic,直接可视化配置就能支持。

    相关文档看:https://iot.bladex.cn/tech/edge/intro.html

    https://iot.bladex.cn/feature/link/edge.html


    边缘网关的技术资料(强烈推荐,学会后大部分对接硬件都不用再修改bladex物联网平台的任何代码):

    CleanShot20250812113429@2x.png

    作者追问:2025-08-12 11:45

    还有一个功能是协议转换,可以看下相关文档:https://iot.bladex.cn/feature/protocol/mapper.html


    主要用于上报的mqtt的topic不一致以及数据不一致的情况。可以通过协议转换创建后,自动根据格式转换成bladex平台所需要的格式,这样也不需要修改代码。你可以看下两种方案,综合考虑尝试下。

    回答: 2025-08-12 11:57

    协议转换怎么进行调试呢  我没看到调试的例子

    回答: 2025-08-12 11:58

    文档怎么发你呢

    作者追问:2025-08-12 12:18

    编辑界面右下角有调试按钮,左边是现有设备的格式,右边是bladex平台的格式,调试后可以看实际的格式输出。


    邮件发这里:bladejava@qq.com

    回答: 2025-08-12 13:32

    看下配置的对么 我昨天就是这么配置的 但是不好使 是不是需要修改啥呢

    作者追问:2025-08-12 13:37

    还是建议你用node-red来对接

    回答: 2025-08-12 13:44

    开端口有点太费劲 正在找人开端口 现在可以先试试这个方法

    {

    "DataType":"SensorData",

    "AxleData":

    {

    "AXLE1":{

    "Adc_L":"<raw_data_1>",

    "Weight_L":"<weight_1>",

    "Adc_R":"<raw_data_2>",

    "Weight_R":"<weight_2>",

    "":""

    },

    "AXLE2":{

    },

    "AXLEn":{

    }

    }

    "Location":

    {

    "Latitude":"<latitude>",

    "Longitude":"<longitude>"

    }

    "TimeStamp":<current_time>

    }

    这个应该怎么转换呢

    作者追问:2025-08-12 13:50

    没设备文档,看不懂

    回答: 2025-08-12 13:51

    1.     传感器测量数据上报

    方向:设备->服务器(定时上报)

    标题:CarIO/<Group_ID>/<Device_ID/SensorData

    其中CarIO为统一系统标识,所有系统的标题统一由CarIO开头;Group_ID为设备分组编号,通常对应到每个客户,可以为字符串、数字或者二者混合;Device_ID为设备编号,对应设备的组内编号,统一的形式为Dxxxxxx,其中x为十进制数字。SensorData为传感器数据标识符

    例:CarIO/SINOPEC/D003176/SensorData

    SensorData报文格式:

    {

    "DataType":"SensorData",

    "AxleData":

    {

    "AXLE1":{

    "Adc_L":"<raw_data_1>",

    "Weight_L":"<weight_1>",

    "Adc_R":"<raw_data_2>",

    "Weight_R":"<weight_2>",

    "":""

    },

    "AXLE2":{

    },

    "AXLEn":{

    }

    }

    "Location":

    {

    "Latitude":"<latitude>",

    "Longitude":"<longitude>"

    }

    "TimeStamp":<current_time>

    }

    字段说明:

    DataType标识数据类型,“SensorData”为上报传感器数据,每个车轴为一组进行上报。

    AxleData标识车桥传感器数据

    AXLEn代表编号为n的车桥,通常最前面的车桥编号为1,依次往后递增。

    <raw_data_L><raw_data_R>分别代表对应车桥的左侧和右侧采样数据原始值,取值为0-4095之间的正整数。

    <weight_L><weight_R>为经过车载终端转换之后得到的重量,取值为正整数。

    <temp>为每个数据采集器内的温度值,单位为摄氏度,精确到0.1度。

    左右区分以驾驶员正常驾驶时所面向的方向左右侧确定。

    Location为位置数据,其中<latidude>是当前经度,<longitude>为当前纬度,取值为实数。

    TimeStamp为时间戳,<current_time>为当前时间,格式为yyyy-mm-dd-hh-mm-ss

    例:

    {

    "AxleData":

    {

    "AXLE1":

    {

    "Adc_L": "430",

    "Adc_R": "453",

    "Temp": "26.88",

    "Weight_L": "1813",

    "Weight_R": "1883"

    },

    "AXLE2":

    {

    "Adc_L": "382",

    "Adc_R": "402",

    "Temp": "26.88",

    "Weight_L": "1472",

    "Weight_R": "1603"

    },

    "AXLE3":

    {

    "Adc_L": "375",

    "Adc_R": "368",

    "Temp": "26.88",

    "Weight_L": "1499",

    "Weight_R": "1404"

    },

    "AXLE4":

    {

    "Adc_L": "375",

    "Adc_R": "368",

    "Temp": "0",

    "Weight_L": "1499",

    "Weight_R": "1404"

    }

    },

    "DataType": "SensorData",

    "Location":

    {

    "Latitude": "39.9024",

    "Logitude": "119.3361 "

    }

    "TimeStamp": "2025-03-31T16:38:47"

    }



    是这个 您看下 怎么转换呢


    回答: 2025-08-12 14:17

    1.     传感器测量数据上报

    方向:设备->服务器(定时上报)

    标题:CarIO/<Group_ID>/<Device_ID/SensorData

    其中CarIO为统一系统标识,所有系统的标题统一由CarIO开头;Group_ID为设备分组编号,通常对应到每个客户,可以为字符串、数字或者二者混合;Device_ID为设备编号,对应设备的组内编号,统一的形式为Dxxxxxx,其中x为十进制数字。SensorData为传感器数据标识符

    例:CarIO/SINOPEC/D003176/SensorData

    SensorData报文格式:

    {

    "DataType":"SensorData",

    "AxleData":

    {

    "AXLE1":{

    "Adc_L":"<raw_data_1>",

    "Weight_L":"<weight_1>",

    "Adc_R":"<raw_data_2>",

    "Weight_R":"<weight_2>",

    "":""

    },

    "AXLE2":{

    },

    "AXLEn":{

    }

    }

    "Location":

    {

    "Latitude":"<latitude>",

    "Longitude":"<longitude>"

    }

    "TimeStamp":<current_time>

    }

    字段说明:

    DataType标识数据类型,“SensorData”为上报传感器数据,每个车轴为一组进行上报。

    AxleData标识车桥传感器数据

    AXLEn代表编号为n的车桥,通常最前面的车桥编号为1,依次往后递增。

    <raw_data_L><raw_data_R>分别代表对应车桥的左侧和右侧采样数据原始值,取值为0-4095之间的正整数。

    <weight_L><weight_R>为经过车载终端转换之后得到的重量,取值为正整数。

    <temp>为每个数据采集器内的温度值,单位为摄氏度,精确到0.1度。

    左右区分以驾驶员正常驾驶时所面向的方向左右侧确定。

    Location为位置数据,其中<latidude>是当前经度,<longitude>为当前纬度,取值为实数。

    TimeStamp为时间戳,<current_time>为当前时间,格式为yyyy-mm-dd-hh-mm-ss

    例:

    {

    "AxleData":

    {

    "AXLE1":

    {

    "Adc_L": "430",

    "Adc_R": "453",

    "Temp": "26.88",

    "Weight_L": "1813",

    "Weight_R": "1883"

    },

    "AXLE2":

    {

    "Adc_L": "382",

    "Adc_R": "402",

    "Temp": "26.88",

    "Weight_L": "1472",

    "Weight_R": "1603"

    },

    "AXLE3":

    {

    "Adc_L": "375",

    "Adc_R": "368",

    "Temp": "26.88",

    "Weight_L": "1499",

    "Weight_R": "1404"

    },

    "AXLE4":

    {

    "Adc_L": "375",

    "Adc_R": "368",

    "Temp": "0",

    "Weight_L": "1499",

    "Weight_R": "1404"

    }

    },

    "DataType": "SensorData",

    "Location":

    {

    "Latitude": "39.9024",

    "Logitude": "119.3361 "

    }

    "TimeStamp": "2025-03-31T16:38:47"

    }

    上面是关于mq的设备文档内容 应该怎么转换呢

    作者追问:2025-08-12 14:21

    CleanShot20250812142122@2x.png

    CleanShot20250812141900@2x.png

    CleanShot20250812141820@2x.png


    CarIO/${groupId}/${deviceId}/SensorData


    CarIO/SINOPEC/D003176/SensorData


    /blade/sys/${topic.groupId}/${topic.deviceId}/thing/event/property/post


    {

        "DataType": "SensorData",

        "AxleData": {

            "AXLE1": {

                "Adc_L": "430",

                "Weight_L": "1813",

                "Adc_R": "453",

                "Weight_R": "1883",

                "Temp": "26.88"

            },

            "AXLE2": {

                "Adc_L": "382",

                "Weight_L": "1472",

                "Adc_R": "402",

                "Weight_R": "1603",

                "Temp": "26.88"

            }

        },

        "Location": {

            "Latitude": "39.9024",

            "Longitude": "119.3361"

        },

        "TimeStamp": "2025-03-31T16:38:47"

    }



    {

        "id": "123",

        "version": "1.0",

        "method": "thing.event.property.post",

        "sys": {

            "ack": 0

        },

        "params": {

    # var ts = body.TimeStamp;

    # for(axleEntry in body.AxleData) {

            "${axleEntry.key}": {

                "value": {

                    "Adc_L": "${axleEntry.value.Adc_L}",

                    "Adc_R": "${axleEntry.value.Adc_R}",

                    "Weight_L": "${axleEntry.value.Weight_L}",

                    "Weight_R": "${axleEntry.value.Weight_R}",

                    "Temp": "${axleEntry.value.Temp}"

                },

                "time": "${ts}"

            }${(!axleEntryLP.last || isNotEmpty(body.Location)) ? ',' : ''}

    # }

    # if(isNotEmpty(body.Location)) {

            "Location": {

                "value": {

                    "Latitude": "${body.Location.Latitude}",

                    "Longitude": "${body.Location.Longitude}"

                },

                "time": "${ts}"

            }

    # }

        }

    }





    作者追问:2025-08-12 14:22

    配置好之后,物模型配置你需要的字段,字段类型看描述应该是要改成json格式。

    物模型配置可以看这里:https://iot.bladex.cn/feature/device/product/tsl.html


    如果不行,就用node-red

    0 讨论(0)
提交回复