Fiware 如何定义在通知Quantumleap时使用的时间索引属性?

Fiware 如何定义在通知Quantumleap时使用的时间索引属性?,fiware,fiware-orion,Fiware,Fiware Orion,我正在使用FIWARE获取一些热泵的时间序列数据。我使用Orion 2.5.2和Quantumleap 0.7.6 我的实体有很多属性,这些属性是成批报告的。这些数据批对每个属性都有单独的时间戳,因此测量的准确时间是已知的(这也相当重要)。我使用一个小python工具来分割这些批处理,并使用时间戳参数通过http将它们分别发送到iot代理 我最终得到了这样一个实体: 。。。 “属性”:{ “室外温度”:{ “价值”:“-6.6”, “类型”:“编号”, “md”:{ “即时时间”:{ “类型”:

我正在使用FIWARE获取一些热泵的时间序列数据。我使用Orion 2.5.2和Quantumleap 0.7.6

我的实体有很多属性,这些属性是成批报告的。这些数据批对每个属性都有单独的时间戳,因此测量的准确时间是已知的(这也相当重要)。我使用一个小python工具来分割这些批处理,并使用时间戳参数通过http将它们分别发送到iot代理

我最终得到了这样一个实体:

。。。
“属性”:{
“室外温度”:{
“价值”:“-6.6”,
“类型”:“编号”,
“md”:{
“即时时间”:{
“类型”:“日期时间”,
“价值”:1613148707.7509995
}
},
“MDName”:[
“即时”
],
“creDate”:1612780352.3855166,
“修改日期”:1613148716.1449544
},
“温度返回流”:{
“价值”:“40.8”,
“类型”:“编号”,
“md”:{
“即时时间”:{
“类型”:“日期时间”,
“价值”:1613149016.394001
}
},
“MDName”:[
“即时”
],
“creDate”:1612780352.3855166,
“修改日期”:1613149021.5991328
},
“即时时间”:{
“价值”:1613149101.1790009,
“类型”:“日期时间”,
“MDName”:[],
“creDate”:1612780352.3855166,
“修改日期”:1613149102.5100079
},
...
我并不真正关心creDate和modDate,而是关心每个属性“md”中的TimeInstant。另外,底部的“TimeInstant”属性只是我认为的最后一个数据点的值?我想使用“md”TimeInstant在CrateDB中创建时间索引。因此,报告的时间必须是自定义元数据。我在订阅Quantumleap时尝试了一些不同的值,但无法正确获取。 有人能告诉我如何指定md->TimeInstant作为时间索引的值吗

我发现文档在这个主题上没有什么结论,希望有人已经解决了这个问题,并可能让我参与进来:)


谢谢!

查看您的有效载荷,不清楚使用的是什么NGSI模型,这将是帮助您所需的信息。无论如何,正如文档所报告的:

时间序列数据库中的一个基本元素是时间索引。您可能会想知道…它存储在哪里?QuantumLeap会将每个通知的时间索引保存在一个名为time_index的特殊列中

用于接收通知的时间索引的值是根据以下策略定义的,该策略从以下有序选项列表中选择第一个当前有效时间值

  • 自定义时间索引。Fiware TimeIndex属性http标头的值。请注意,要使通知包含此类标头,必须使用httpCustom块创建相应的订阅,详见NGSI规范的“订阅和自定义通知”部分。这是指示QL使用自定义属性的方法将作为时间索引指示器的通知有效负载的tes
  • 自定义时间索引元数据。在通知的任何属性元数据部分中找到的最新自定义时间索引(Fiware TimeIndex属性的值)属性值。有关订阅的详细信息,请参阅上一选项
  • TimeInstant属性。如FIWARE IoT代理文档中所述
  • TimeInstant元数据。在通知的任何属性元数据部分中找到的最新TimeInstant属性值。(同样,请参阅FIWARE IoT代理文档。)
  • 时间戳属性
  • 时间戳元数据。在通知的任何属性元数据部分中找到的最新时间戳属性值。如FIWARE数据模型文档中所指定
  • dateModified属性。如果您在Orion订阅部分引起注意,则这是Orion通知的“dateModified”值。 dateModified元数据。在通知的任何属性元数据部分中找到的最新dateModified属性值
  • 最后,如果上面的选项都不存在或者找到的值都不能转换为日期时间,那么QL将使用当前时间(接收通知的时间)

    这意味着(如果您了解NGSI模型,文档就非常清楚了),具有以下有效负载

    {
        "id": "Room1",
        "type": "Room",
        "temperature": {
            "value": 24.2,
            "type": "Number",
            "metadata": {
                "myTime": {
                    "type": "DateTime",
                    "value": "2020-12-16T17:13:46.00Z"
                }
             }
        },
        "pressure": {
            "value": 720,
            "type": "Number",
            "metadata": {
                "TimeInstant": {
                    "type": "DateTime",
                    "value": "2020-12-16T17:13:46.00Z"
                }
             }
        },
        "dateObserved": "2021-02-02T00:00:00.00Z",
        "dateCreated": "2019-09-24T12:49:02.00Z",
        "dateModified": "2021-02-02T23:00:50.00Z",
        "TimeInstant": {
              "type": "DateTime",
              "value": "2020-12-16T17:13:46.00Z"
        }
    }
    
    如果在通知中设置自定义标题
    Fiware TimeIndex Attribute=dateObserved
    ,则time\u index将是dateObserved的值。如果设置
    Fiware TimeIndex Attribute=myTime
    ,则将是链接到温度的myTime属性元数据。如果未设置
    Fiware TimeIndex Attribute
    标题,则传递最新记录将拾取元数据属性
    TimeInstant
    的ent值。假设删除上述有效负载中的元数据属性
    TimeInstant
    ,则将拾取属性
    TimeInstant
    。如果
    TimeInstant
    属性也被删除,则将拾取
    dateModified
    值。如果该属性为也未收到,使用当前时间