【问题标题】:I cannot properly read Southbound commands through Orion to MQTT devices我无法通过 Orion 将 Southbound 命令正确读取到 MQTT 设备
【发布时间】:2023-01-04 16:15:27
【问题描述】:

我正在尝试按照以下流程向南行方向发送命令:

设备支持的命令规定如下:

    "services": [
        {
            "apikey": "5jggokgpepnvsb2uv4s40d59ov",
            "cbroker":     "'"http://orion:$ORION_PORT"'",
            "entity_type": "Agv",
            "transport": "MQTT",
            "resource": "",
            "commands": [
                {
                    "object_id": "AGV_Alarm",
                    "name": "AGV_Alarm",
                    "type": "command",
                    "value": {
                        "data": "metadata_for_AGV_Alarm"
                    }
                },
                {
                    "object_id": "AGV_Event",
                    "name": "AGV_Event",
                    "type": "command",
                    "value": {
                        "data": "metadata_for_AGV_Event"
                    }
                }
            ],

向南方向发送命令的请求是通过 Orion Context Broker 发出的:

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

为了模拟执行器,使用了以下工具,它通过 MQTT 侦听命令:

docker run -it --rm --name mqtt-subscriber --network fiware_default efrecon/mqtt-client sub -h mosquitto -t "/5jggokgpepnvsb2uv4s40d59ov/agv001/cmd"

我只能收到命令的一部分有效负载:

ubuntu@ip-172-31-85-246:~/FiwareDockerDevMode$ docker run -it --rm --name mqtt-subscriber --network fiware_default efrecon/mqtt-client sub -h mosquitto -t "/5jggokgpepnvsb2uv4s40d59ov/agv001/cmd"
{"AGV_Event":""}
{"AGV_Event":""}
{"AGV_Event":""}

在临时 MongoDB 中,命令状态显示为 PENDING

AGV_Event_status: {
            type: 'commandStatus',
            creDate: 1669583822.6813245,
            modDate: 1669584130.4993052,
            value: 'PENDING',
            mdNames: [
                'TimeInstant'
            ],
            md: {
                TimeInstant: {
                    type: 'DateTime',
                    value: 1669584130.495
                }
            }
        },
        AGV_Event_info: {
            type: 'commandResult',
            creDate: 1669583822.6813245,
            modDate: 1669583822.6813245,
            value: ' ',
            mdNames: []
        },

更新

另一方面,如果我根据它在 MongoDB 中的结构发送命令:

curl -iX PATCH \
  'http://orion:1026/v2/entities/urn:ngsi-ld:Agv:001/attrs' \
  -H 'Content-Type: application/json' \
  -H 'fiware-service: openiot' \
  -H 'fiware-servicepath: /' \
  -d '{
    "AGV_Event_info": {
    "type": "commandResult",
    "value": "200"
    },
   "AGV_Event_status": {
    "type": "commandStatus",
    "value": "OK"
   }
  }'

现在,执行器模拟器没有收到任何信息:

ubuntu@ip-172-31-85-246:~/FiwareDockerDevMode$ docker run -it --rm --name mqtt-subscriber --network fiware_default efrecon/mqtt-client sub -h mosquitto -t "/5jggokgpepnvsb2uv4s40d59ov/agv001/cmd"

但是,临时 MongoDB 已正确更新:

        AGV_Event_status: {
            type: 'commandStatus',
            creDate: 1669731581.9883916,
            modDate: 1669733857.6557434,
            value: 'OK',
            mdNames: []
        },
        AGV_Event_info: {
            type: 'commandResult',
            creDate: 1669731581.9883916,
            modDate: 1669733857.6557305,
            value: '200',
            mdNames: []
        },

IoTAgent-JSON 的官方文档表明,当向南方向发送命令时,执行器将发送响应,考虑到我的执行器是假人,这是有道理的。

关于如何接收通过 Orion Context Broker 发送的所有信息的任何建议?

【问题讨论】:

    标签: fiware fiware-orion


    【解决方案1】:

    看起来命令配置不正确。对于测试,仅尝试类似name 的内容:

    "commands": [
            { "name": "ring", "type": "command" }
    ],
    

    对于每个命令,而不是添加 object_idvalue

    只有在 Context Broker 数据模型和 MQTT 主题之间存在不同的命名约定时才需要 object_id

    XXX_statusXXX_info 的 PATCH 与此处无关。这个请求是由。 IoT 代理本身一旦从 MQTT 收到 cmdExe 主题。由于 MQTT 传输是异步的,状态将保持在PENDING,除非设备(或 MQTT 上的虚拟主题)已明确返回状态更新。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-24
      • 2018-07-01
      • 2019-05-14
      • 1970-01-01
      • 2018-10-07
      相关资源
      最近更新 更多