1

我的配置包括 orion、IoT Agent JSON 和 mongoDB。我想构建一个 Fiware Lamp 执行器,并且我也想拥有开/关状态(作为传感器)。

目前我使用带有正文的 PATCH 请求(形式 ORION):首先使用 on 命令:

{
  "on": {
      "type" : "command",
      "value" : ""
  }
}

然后使用 off 命令:

{
  "off": {
      "type" : "command",
      "value" : ""
  }
}

当我从上面收到任何内容时,我会从虚拟设备回复 200 OK。

我的配置中的上述内容使 on 和 off 标记都处于待处理状态:

{
    "id": "urn:ngsi-ld:Lamp:001",
    "type": "Lamp",
    "TimeInstant": "2020-11-04T22:42:37.00Z",
    "category": [
        "actuator",
        "sensor"
    ],
    "controlledProperty": "lamp",
    "function": [
        "onOff",
        "sensing"
    ],
    "off_info": " ",
    "off_status": "PENDING",
    "on_info": " ",
    "on_status": "PENDING",
    "refStore": "urn:ngsi-ld:Store:001",
    "state": " ",
    "supportedProtocol": [
        "JSON"
    ],
    "supportedUnits": "My Unit 2",
    "on": "",
    "off": ""
}

我想我错过了一些东西,那么我是否必须将任何响应发送回 IoT Agent json 以使两个标签之一停止挂起?我必须在此过程中更新状态或信息吗?

PS我希望有这样的回复:

{
    "id": "urn:ngsi-ld:Lamp:001",
    "type": "Lamp",
    "TimeInstant": "2020-11-04T22:42:37.00Z",
    "category": [
        "actuator",
        "sensor"
    ],
    "controlledProperty": "lamp",
    "function": [
        "onOff",
        "sensing"
    ],
    "off_info": " ",
    "off_status": "PENDING",
    "on_info": " ",
    "on_status": "OFF",
    "refStore": "urn:ngsi-ld:Store:001",
    "state": " ",
    "supportedProtocol": [
        "JSON"
    ],
    "supportedUnits": "My Unit 2",
    "on": "",
    "off": ""
}
4

1 回答 1

2

命令流程如下所示:

在此处输入图像描述

假设您的命令已到达灯并已打开,则需要将结果传递回 IoT 代理。对于 JSON IoT 代理,有效负载如下所示:

{"on" : "OK"}

其中键是命令的名称,值是状态。我的猜测是您的设备只是响应200 OK而没有有效负载,因此 IoT 代理不知道触发了哪个命令。

请注意,在分布式网络(例如 MQTT 或 AMPQ)的情况下,响应将异步发布到另一个主题上,因此命令可能会处于某个PENDING状态一段时间。

于 2020-11-05T09:26:54.690 回答