我的orion DB中有一个实体:
{
"id"=>"User-121",
"type"=>"User",
"location"=>{
"type"=>"geo:point",
"value"=>"59.851484, 30.199463"
},
"time"=>{"type"=>"none", "value"=>222909, "metadata"=>{}}
}
此外,我有3个订阅此实体,它在条件表达式中具有相同的坐标:
- 应在实体定位时触发,距离参考点至少100米。
醇>
{
"id"=>"...",
"expires"=>"...",
"status"=>"active",
"subject"=>{
"entities"=>[{"id"=>"User-121", "idPattern"=>"", "type"=>"User"}],
"condition"=>{
"attributes"=>["location", "time"],
"expression"=>{
"q"=>"",
"geometry"=>"point",
"coords"=>"59.851484, 30.199463",
"georel"=>"near;minDistance:100"}
}
},
"notification"=>{
"callback"=>"http://callback",
"attributes"=>["time"]
}
}
- 当实体位于距离参考点最远100米时,应触发
醇>
{
"id"=>"...",
"expires"=>"...",
"status"=>"active",
"subject"=>{
"entities"=>[{"id"=>"User-121", "idPattern"=>"", "type"=>"User"}],
"condition"=>{
"attributes"=>["location", "time"],
"expression"=>{
"q"=>"",
"geometry"=>"point",
"coords"=>"59.851484, 30.199463",
"georel"=>"near;maxDistance:100"}
}
},
"notification"=>{
"callback"=>"http://callback",
"attributes"=>["time"]
}
},
- 当实体位于参考点(具有相同的坐标)时应触发
醇>
{
"id"=>"...",
"expires"=>"...",
"status"=>"active",
"subject"=>{
"entities"=>[{"id"=>"User-121", "idPattern"=>"", "type"=>"User"}],
"condition"=>{
"attributes"=>["location", "time"],
"expression"=>{
"q"=>"",
"geometry"=>"point",
"coords"=>"59.851484, 30.199463",
"georel"=>"equals"}
}
},
"notification"=>{
"callback"=>"http://callback",
"attributes"=>["time"]
}
}
问题是每次更新实体时所有订阅都会发送通知。它甚至不依赖于实体的坐标值。无论坐标是什么,我总会收到3次任何更新的通知。
我做错了什么?
Orion Context Broker版本 0.28.0 (git版本:5c1afdb3dd748580f10e1809f82462d83d2a17d4)
答案 0 :(得分:1)
NGSIv2订阅中的地理位置功能尚未实施(在Orion 0.28.0中)。请注意,NGSIv2尚处于测试状态,有时the specification(geometry
,georel
和coords
被定义为expression
的一部分)是向前迈出的一步实施。
有关于此的a github issue,您可以订阅以了解此功能的实施时间。
编辑:NGSIv2订阅中的地理位置功能将在Orion 1.3.0中提供(将于8月底或9月初发布)。如果您不想等待,请注意开发分支(以及相关的Docker)中也提供了该功能。