iot - 用于模仿 IoT 代理命令的 NGSI v2 端点是什么?
问题描述
在测试南向命令时,我目前使用的是 NGSI v1 端点,如下所示:
curl -X POST \
'http://{{iot-agent}}/v1/updateContext' \
-H 'Content-Type: application/json' \
-H 'fiware-service: openiot' \
-H 'fiware-servicepath: /' \
-d '{
"contextElements": [
{
"type": "Bell",
"isPattern": "false",
"id": "urn:ngsi-ld:Bell:001",
"attributes": [
{
"name": "ring",
"type": "command",
"value": ""
}
]
}
],
"updateAction": "UPDATE"
}'
如您所见,这是一个 NGSI v1 请求。根据关于 Slideshare(幻灯片 16)的演示文稿,不鼓励使用 NGSI v1 - 我想用 NGSI v2 请求替换它。我相信所有物联网代理现在都支持 NGSI v2,但是我无法在文档中找到替换 NGSI v2 请求的详细信息。
所以问题是使用 NGSI v2 模仿 Orion 命令的等效 cUrl 命令是什么?
解决方案
在本文档中,您可以看到有关如何使用 NGSIv2 API 发送命令的良好参考:
如果您查看前面的设备示例,您会发现定义了一个“ping”命令。在 ContextBroker 中的 NGSI 实体上对这个属性“Ping”的任何更新都会向您的设备发送一个命令。例如,要发送值为“Ping request”的“Ping”命令,您可以在 ContextBroker API 中使用以下操作:
PUT /v2/entities/[ENTITY_ID]/attrs/ping { "value": "Ping request", "type": "command" }
ContextBroker API 非常灵活,允许以多种方式更新属性。有关详细信息,请查看NGSIv2 规范。
重要提示:不要在 NGSI API 中使用具有创建语义的操作。否则,实体/属性将在本地创建到 ContextBroker,并且命令不会继续到设备(如果要使其再次工作,则需要删除创建的实体/属性)。因此,不得使用以下操作:
POST /v2/entities
PUT /v2/entities
POST /v2/op/entites
与actionType
append
,appendStrict
或replace
POST /v1/updateContext
与actionType
APPEND
,APPEND_STRICT
或REPLACE
编辑:以上所有内容均指最终客户端用于发送命令的 Orion 端点。@jason-fox 已澄清该问题是指从 Orion 接收命令请求的 IOTA 端点(这应该是显而易见的{{iot-agent}}
,但我错过了那部分抱歉 :)
Orion 到 IOTA 的命令通信基于注册转发机制。目前,Orion 总是使用 NGSIv1 来转发更新(即使在客户端使用 NGSIv2 更新的情况下)。未来,我们设想使用 NGSIv2,但为了实现这一点,首先我们需要:
- 完成上下文源转发规范,基于 NGSIv2。目前正在此 PR 中讨论。欢迎反馈作为对该 PR 的评论!
- 在 Orion 中实现基于上下文源转发规范的转发
- 在 IOTA 中实现符合上下文源转发规范的 NGSIv2 端点。
虽然上述内容已完成,但唯一的机制是基于 NGSIv1 的当前机制。但是,请注意 Orion-IOTA 交互是平台组件内部的,最终客户端可以基于 NGSIv2 与平台(特别是 Orion 端点)进行所有交互,因此这不是一个大问题。
推荐阅读
- qt - 强制 qt-vlc 不隐藏鼠标光标
- ruby - 如何在配方中的控制语句中检查节点版本
- vba - 复制和重命名文件
- angular - Angular 2 - 在父组件单击的按钮上将数据从父组件传递到子组件
- ios - 如何在 AVPlayer 中正确播放 MPMediaPicker 中的歌曲?
- json.net - ASP.NET Core MVC - 将 JSON 发送到服务器时为空字符串
- javascript - 用 attr 查找 div 并更改其样式
- javascript - mainWindow.loadFile(`file://${__dirname}/index.html`)- 即使在使用“反引号”后也无法正常工作
- python - 如何在python中用单反斜杠替换双反斜杠
- c# - MxParser 和 nuget