我的目的是进行订阅,以便当属性值超过阈值时,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"
}
}
}
}
答案 0 :(得分:1)
请注意,您的温度是一个字符串(EnvironmentName
),而不是数字。为了使过滤器工作,它应该是一个数字,即你必须得到:
"6"
请注意,NGSIv1 API不允许使用除字符串之外的JSON本机类型创建/更新属性(可以在this presentation中找到更详细的说明,“本机JSON数据类型”幻灯片)如果您尝试使用NGSIv1操作创建/更新温度作为数字,它将被转换为字符串。
因此,您必须使用NGSIv2 API(没有此限制)才能使用数值创建/更新属性。例如,以下请求将温度值更新为(数值)值6:
{
..
"temperature":{
"type": "float",
"value": 6,
..
}