我的目的是进行订阅,以便当属性值超过treshold时,来自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
我还在Context Broker上使用noCache尝试了订阅解决方案。
编辑:当我查询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"
}
}
}
}发布于 2017-05-16 16:12:32
请注意,您的温度是字符串("6"),而不是数字。为了使过滤器工作,它应该是一个数字,也就是说,您必须得到:
{
..
"temperature":{
"type": "float",
"value": 6,
..
}请注意,NGSIv1 API不允许使用字符串以外的JSON原生类型创建/更新属性(在这份报告中可以找到更详细的解释,即“本机JSON”幻灯片),如果您决定使用NGSIv1操作创建/更新温度为一个数字,那么它将被转换为string。
因此,您必须使用NGSIv2 API (它没有这种限制)来创建/更新具有数值的属性。例如,以下请求将温度值更新为(数值)值6:
PUT /v2/entities/room1/attrs/temperature
{
"type": "float",
"value": 6
}https://stackoverflow.com/questions/43981642
复制相似问题