![](/img/trans.png)
[英]Fiware IoT Agent Json refused to POST to /v2/op/update
[英]What is the NGSI v2 endpoint for mimicking IoT Agent commands?
在测试 Southbound 命令时,我目前使用的是 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
withactionType
append
,appendStrict
或replace
- 使用
actionType
APPEND
、APPEND_STRICT
或REPLACE
POST /v1/updateContext
编辑:以上所有内容均指最终客户端用于发送命令的Orion 端点。 @jason-fox 已澄清该问题是指从 Orion 接收命令请求的IOTA 端点( {{iot-agent}}
应该很明显,但我很抱歉错过了那部分:)
命令的 Orion 到 IOTA 通信基于注册转发机制。 目前,Orion 始终使用 NGSIv1 来转发更新(即使在客户端使用 NGSIv2 更新的情况下)。 未来,我们设想使用 NGSIv2,但为了实现这一目标,首先我们需要:
虽然上面已经完成,但唯一的机制是基于 NGSIv1 的当前机制。 但是,请注意 Orion-IOTA 交互是平台组件内部的,最终客户端可以将所有与平台(特别是 Orion 端点)的交互基于 NGSIv2,所以这不是一个大问题。
基于 NGSIv2 的上下文源转发规范现已完成,旧的/v1
端点已弃用。 根据对 NGSIv2相关支持问题的讨论,正确的发送请求如下:
curl -iX POST \
http://localhost:4041/v2/op/update \
-H 'Content-Type: application/json' \
-H 'fiware-service: openiot' \
-H 'fiware-servicepath: /' \
-d '{
"actionType": "update",
"entities": [
{
"type": "Bell",
"id": "urn:ngsi-ld:Bell:001",
"ring" : {
"type": "command",
"value": ""
}
}
]
}'
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.