当表达式条件为真时,Orion订阅

时间:2017-05-15 14:08:21

标签: fiware-orion

我的目的是进行订阅,以便当属性值超过阈值时,Orion测试包中的累加器服务器会收到通知。如果我是正确的,这在NGSI v1上没有实现。因此,当我使用上述订阅有效负载时,使用合适的服务和子服务标头 NGSI v2

 {  
   "description":"mydescription",
   "subject":{  
      "entities":[  
         {  
            "id":"room1",
            "type":"room",
            "isPattern":"false"
         }
      ],
      "condition":{  
         "attrs":[  
            "temperature"
         ],
         "expression":{  
            "q":"temperature>5"
         }
      }
   },
   "notification":{  
      "http":{  
         "url":"http://myURL:1028/accumulate"
      },
      "attrs":[  

      ]
   },
   "expires":"2040-01 
        -01T14:00:00.00Z"
}

我在累积器服务器上没有收到任何通知。如果没有表达式,我会在订阅时收到第一个地方的通知,也会在每次更改属性的值时收到通知。

猎户座版:1.7.0

我还尝试使用noCache解决方案在Context Broker上进行订阅。

编辑:当我查询room1的上下文

curl -X GET localhost:1026/v2/entities/room1 -H "Fiware-Service: myService" -H "Fiware-ServicePath: /mySubService"

这是猎户座的回复。

{  
   "id":"room1",
   "type":"room",
   "TimeInstant":{  
      "type":"ISO8601",
      "value":"2017-05-15T13:33:35.632Z",
      "metadata":{  

      }
   },
   "temperature":{  
      "type":"float",
      "value":"6",
      "metadata":{  
         "TimeInstant":{  
            "type":"ISO8601",
            "value":"2017-05-15T13:33:35.632Z"
         }
      }
   }
}

1 个答案:

答案 0 :(得分:1)

请注意,您的温度是一个字符串(EnvironmentName),而不是数字。为了使过滤器工作,它应该是一个数字,即你必须得到:

"6"

请注意,NGSIv1 API不允许使用除字符串之外的JSON本机类型创建/更新属性(可以在this presentation中找到更详细的说明,“本机JSON数据类型”幻灯片)如果您尝试使用NGSIv1操作创建/更新温度作为数字,它将被转换为字符串。

因此,您必须使用NGSIv2 API(没有此限制)才能使用数值创建/更新属性。例如,以下请求将温度值更新为(数值)值6:

{  
..
   "temperature":{  
      "type": "float",
      "value": 6,
..
}