簡體   English   中英

什么是模擬物聯網代理命令的 NGSI v2 端點?

[英]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 with actionType append , appendStrictreplace
  • 使用actionType APPENDAPPEND_STRICTREPLACE POST /v1/updateContext

編輯:以上所有內容均指最終客戶端用於發送命令Orion 端點 @jason-fox 已澄清該問題是指從 Orion 接收命令請求IOTA 端點{{iot-agent}}應該很明顯,但我很抱歉錯過了那部分:)

命令的 Orion 到 IOTA 通信基於注冊轉發機制。 目前,Orion 始終使用 NGSIv1 來轉發更新(即使在客戶端使用 NGSIv2 更新的情況下)。 未來,我們設想使用 NGSIv2,但為了實現這一目標,首先我們需要:

  • 完成上下文源轉發規范,基於NGSIv2。 目前正在此 PR 中進行討論。 歡迎反饋作為對該 PR 的評論!
  • 在 Orion 中實現基於上下文源轉發規范的轉發
  • 在 IOTA 中實現符合上下文源轉發規范的 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM