通过 IOT-Agent 在设备上修改属性 Json

Modify attribute on device by IOT-Agent Json

我正在使用带有 MQTT 绑定的物联网代理 JSON

我使用 iot-agent 在 orion 中注册了一个传感器执行器,并创建了订阅。

如果第三方应用程序修改了传感器值,orion 必须向设备发送 iot-agent 信息和 iot-agent。

例如,如果我在传感器内有 3 个属性,其中一个控制阀门。

在 orion 中,该属性是真还是假。

如果属性被修改,orion必须发送到iot-agent和iot-agent到设备以关闭或打开阀门。

补充信息:

该软件是 Fiware Generic Enable 的两个组件。

物联网代理JSON:https://github.com/telefonicaid/iotagent-json Fiware-orionCB:https://github.com/telefonicaid/fiware-orion

可以吗?

没有官方教程将 JSON IoT 代理 通过 MQTT 连接到设备,但是 Ultralight IoT Agent[= 存在非常相似的教程16=]

物联网设备是:

  • 传感器 - 从现实世界读取测量值
  • 执行器 - 改变世界的状态
  • 两者

您的问题是您无法让 Orion 直接更新 传感器 的 attribute/state。上下文代理中实体的属性表示传感器的传入状态 - 即来自 传感器.

的测量值

例如,对于 传感器 读取阀门状态,它可能是 "open: "true"

为了更新 执行器 ,您需要发送 command,而不是更改值。

您应该在配置设备时设置命令(假定您已经有服务):

curl -iX POST \
  'http://localhost:4041/iot/devices' \
  -H 'Content-Type: application/json' \
  -H 'fiware-service: openiot' \
  -H 'fiware-servicepath: /' \
  -d '{
  "devices": [
    {
      "device_id": "bell001",
      "entity_name": "urn:ngsi-ld:Bell:001",
      "entity_type": "Bell",
      "protocol": "PDI-IoTA-UltraLight",
      "transport": "MQTT",
      "commands": [
        { "name": "ring", "type": "command" }
       ],
       "static_attributes": [
         {"name":"refStore", "type": "Relationship","value": "urn:ngsi-ld:Store:001"}
      ]
    }
  ]
}
'

然后您可以通过更改命令属性的状态来发送命令来执行某些操作(例如按铃、打开阀门等)。

curl -iX PATCH \
  'http://localhost:1026/v2/entities/urn:ngsi-ld:Bell:001/attrs' \
  -H 'Content-Type: application/json' \
  -H 'fiware-service: openiot' \
  -H 'fiware-servicepath: /' \
  -d '{
  "ring": {
      "type" : "command",
      "value" : ""
  }
}'

根据您配置设备的方式,您可能还需要 register the command - 虽然这可能不是必需的。