代码之家  ›  专栏  ›  技术社区  ›  Jason Fox

模拟物联网代理命令的ngsi v2端点是什么?

  •  2
  • Jason Fox  · 技术社区  · 7 年前

    当测试命令向南时,我当前使用的是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"
    }'
    

    如您所见,这是一个NGSIv1请求。根据 this presentation 在Slideshare(幻灯片16)上,使用ngsi v1是 气馁 -我想用一个ngsi v2请求替换这个。我相信所有物联网代理现在都可以使用NGSi v2,但是我在文档中找不到替代NGSi v2请求的详细信息。

    所以问题是,使用ngsi v2模拟Orion命令的等效curl命令是什么?

    1 回复  |  直到 7 年前
        1
  •  1
  •   fgalan    7 年前

    this document 关于如何使用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 specification 有关详细信息。

    重要提示: 不要在具有创建语义的NGSIAPI中使用操作。否则,实体/属性将在本地创建到ContextBroker,并且该命令将不会进入设备(如果要使创建的实体/属性再次工作,则需要删除它)。因此,以下操作 必须 不可使用:

    • POST /v2/entities
    • PUT /v2/entities
    • POST /v2/op/entites 具有 actionType append ,请 appendStrict replace
    • POST /v1/updateContext 具有 操作类型 APPEND ,请 APPEND_STRICT REPLACE

    编辑 :以上均指 最终客户端用于发送命令的Orion终结点 .@杰森·福克斯澄清了这个问题是指 接收来自Orion的命令请求的IOTA终结点 (这应该是显而易见的 {{iot-agent}} ,但我错过了那部分对不起:)

    ORION到IOTA的命令通信基于注册转发机制。目前,Orion总是使用ngsiv1转发更新(即使客户端使用ngsiv2更新)。在未来,我们设想使用ngsiv2,但为了实现这一点,首先我们需要:

    • 完成基于ngsiv2的上下文源转发规范。目前正在讨论中 in this PR .欢迎将反馈意见作为对公关的评论!
    • 在Orion中实现基于上下文的转发源转发规范
    • 在物联网中实现符合上下文源转发规范的ngsiv2端点。

    当上述工作完成时,唯一的机制是当前的基于ngsiv1的机制。但是,请注意,Orion物联网交互是平台组件的内部交互,最终客户端可以将其与平台(尤其是Orion端点)的所有交互建立在ngsiv2上,因此这不是一个大问题。

    推荐文章