Команда, отправленная в ContextBroker, не достигает агента IOT - PullRequest
0 голосов
/ 26 июня 2019

У меня есть некоторые проблемы с командами в IoTAgent JSON, использующих MQTT.Я следую этим инструкциям:

POST ioat-agent:4041/iot/devices
{
  "devices": [
    {
      "device_id": "id_lamp1",
      "entity_name": "lamp1",
      "entity_type": "lamp",
      "attributes": [
        {
          "object_id": "l",
          "name": "luminosity",
          "type": "float"
        }
      ],
      "commands":[
        {
            "object_id": "u",
            "name": "ping",
            "type": "command"
        }
        ],
      "protocol": "IoTA-JSON",
      "transport": "MQTT"
    }
  ]
}

Я пытаюсь отправить команду в OCB.Примерно так:

POST ocb:1026/v2/entities/lamp1/attrs?type=lamp
{
    "ping":{
        "type": "command",
        "value": "Ping Request"
    }
}

Это работает нормально, потому что я получил в журнале:

fiware-iot-agent | time=2019-05-16T09:42:00.436Z | lvl=DEBUG | corr=da768116-77be-11e9-8e17-0242ac140004 | trans=ed164f14-ffd8-404a-8da4-53b901d103b5 | op=IoTAgentNGSI.GenericMiddlewares | srv=myhome | subsrv=/environment | msg=Body:
fiware-iot-agent | {
fiware-iot-agent |     "entities": [
fiware-iot-agent |         {
fiware-iot-agent |             "type": "lamp",
fiware-iot-agent |             "isPattern": "false",
fiware-iot-agent |             "id": "lamp1"
fiware-iot-agent |         }
fiware-iot-agent |     ],
fiware-iot-agent |     "attributes": [
fiware-iot-agent |         "ping"
fiware-iot-agent |     ]
fiware-iot-agent | }
fiware-iot-agent |  | comp=IoTAgent
fiware-iot-agent | time=2019-05-16T09:42:00.457Z | lvl=DEBUG | corr=da768116-77be-11e9-8e17-0242ac140004 | trans=ed164f14-ffd8-404a-8da4-53b901d103b5 | op=IoTAgentNGSI.ContextServer | srv=myhome | subsrv=/environment | msg=Handling query from [iot-agent:4041] | comp=IoTAgent
fiware-iot-agent | time=2019-05-16T09:42:00.462Z | lvl=DEBUG | corr=da768116-77be-11e9-8e17-0242ac140004 | trans=ed164f14-ffd8-404a-8da4-53b901d103b5 | op=IoTAgentNGSI.MongoDBDeviceRegister | srv=myhome | subsrv=/environment | msg=Looking for device with name [lamp1]. | comp=IoTAgent
fiware-iot-agent | time=2019-05-16T09:42:00.481Z | lvl=DEBUG | corr=3273f192-1cdc-42dc-80b1-9e0cab5a8a2b | trans=3273f192-1cdc-42dc-80b1-9e0cab5a8a2b | op=IoTAgentNGSI.MongoDBGroupRegister | srv=n/a | subsrv=n/a | msg=Looking for group params ["service","subservice","type"] with queryObj {"service":"myhome","subservice":"/environment","type":"lamp"} | comp=IoTAgent
fiware-iot-agent | time=2019-05-16T09:42:00.489Z | lvl=DEBUG | corr=3273f192-1cdc-42dc-80b1-9e0cab5a8a2b | trans=3273f192-1cdc-42dc-80b1-9e0cab5a8a2b | op=IoTAgentNGSI.MongoDBGroupRegister | srv=n/a | subsrv=n/a | msg=Device group for fields [["service","subservice","type"]] not found: [{"service":"myhome","subservice":"/environment","type":"lamp"}] | comp=IoTAgent
fiware-iot-agent | time=2019-05-16T09:42:00.491Z | lvl=ERROR | corr=3273f192-1cdc-42dc-80b1-9e0cab5a8a2b | trans=3273f192-1cdc-42dc-80b1-9e0cab5a8a2b | op=IoTAgentNGSI.Alarms | srv=n/a | subsrv=n/a | msg=Raising [MONGO-ALARM]: {"name":"DEVICE_GROUP_NOT_FOUND","message":"Couldn\t find device group","code":404} | comp=IoTAgent
fiware-iot-agent | time=2019-05-16T09:42:00.495Z | lvl=DEBUG | corr=3273f192-1cdc-42dc-80b1-9e0cab5a8a2b | trans=3273f192-1cdc-42dc-80b1-9e0cab5a8a2b | op=IoTAgentNGSI.ContextServer | srv=n/a | subsrv=n/a | msg=Handling received set of attributes: ["ping"] | comp=IoTAgent
fiware-iot-agent | time=2019-05-16T09:42:00.496Z | lvl=DEBUG | corr=3273f192-1cdc-42dc-80b1-9e0cab5a8a2b | trans=3273f192-1cdc-42dc-80b1-9e0cab5a8a2b | op=IoTAgentNGSI.MongoDBDeviceRegister | srv=n/a | subsrv=n/a | msg=Looking for device with name [lamp1]. | comp=IoTAgent
fiware-iot-agent | time=2019-05-16T09:42:00.506Z | lvl=ERROR | corr=3273f192-1cdc-42dc-80b1-9e0cab5a8a2b | trans=3273f192-1cdc-42dc-80b1-9e0cab5a8a2b | op=IoTAgentNGSI.Alarms | srv=n/a | subsrv=n/a | msg=Releasing [MONGO-ALARM] | comp=IoTAgent
fiware-iot-agent | time=2019-05-16T09:42:00.509Z | lvl=DEBUG | corr=3273f192-1cdc-42dc-80b1-9e0cab5a8a2b | trans=3273f192-1cdc-42dc-80b1-9e0cab5a8a2b | op=IoTAgentNGSI.ContextServer | srv=n/a | subsrv=n/a | msg=Query from [iot-agent:4041] handled successfully. | comp=IoTAgent
fiware-iot-agent | time=2019-05-16T09:42:00.511Z | lvl=DEBUG | corr=3273f192-1cdc-42dc-80b1-9e0cab5a8a2b | trans=3273f192-1cdc-42dc-80b1-9e0cab5a8a2b | op=IoTAgentNGSI.ContextServer | srv=n/a | subsrv=n/a | msg=Generated query response: {"contextResponses":[{"contextElement":{"type":"lamp","isPattern":false,"id":"lamp1","attributes":[{"name":"ping","type":"command","value":""}]},"statusCode":{"code":200,"reasonPhrase":"OK"}}]} | comp=IoTAgent

Но я не получаю сообщений в теме / 1234 / id_lamp1/ cmd, и я не вижу PENDING в атрибуте ring_status объекта OCB.Хотя, когда я моделирую устройство lamp1 и публикую сообщение в / 1234 / id_lamp1 / cmdexe, ring_status и ring_info меняются на OK и 22 соответственно.

1 Ответ

1 голос
/ 26 июня 2019

Проблема связана с использованием глагола POST (в POST /v2/entities/lamp1/attrs?type=lamp) для отправки команды.POST имеет семантику создания, поэтому он добавляет атрибут ping к сущности, а не передает его в IOTA.Таким образом, команда никогда не достигает IOTA, поэтому IOTA никогда не публикуется в брокере MQTT.Это объясняется более подробно в «Важном примечании» этого раздела документации .

Однако, если вы используете PATCH вместо POST (то есть PATCH /v2/entities/lamp1/attrs?type=lamp), пересылка происходит такIOTA получает команду, и IOTA опубликует {"ping":"Ping Request"} в разделе / ​​1234 / id_lamp1 / cmd в брокере MQTT.

Если вы уже выполнили POST /v2/entities/lamp1/attrs?type=lamp, то сначала необходимо исправить ситуацию, удалив атрибутс DELETE /v2/entities/lamp1/attrs/ping в API посредника контекста Orion.В противном случае локальный атрибут ping, созданный вами с помощью POST, будет иметь преимущество перед зарегистрированным атрибутом ping в IOTA, когда вы выполняете PATCH, и пересылка не будет выполняться.

...