Я развернул стек iot с помощью докера.Это использованные контейнеры:
- fiware / orion: 1.13.0
- fiware / iotagent-json: 1.8.0
- eclipse-mosquitto: 1.4.12
- [другие контейнеры, не вовлеченные в проблему ...]
Я зарегистрировал на агенте следующее устройство:
{
"device_id": "t3",
"service": "lmobile",
"service_path": "/lmobile_Industry",
"entity_name": "t3",
"entity_type": "Device",
"endpoint": "tcp://<mqttborker_publicip>:<port>",
"transport": "MQTT",
"attributes": [{
"object_id": "led",
"name": "led",
"type": "text"
}],
"lazy": [],
"commands": [{
"object_id": "c",
"name": "c",
"type": "Command"
}],
"static_attributes": [
....
],
"protocol": "JSON"
}
и соответствующеесущность была должным образом создана в OCB, и когда я публикую новую меру на mqttbroker, в теме /<apikey>/t3/attrs
мера должным образом направлена в OCB.
Чтобы отправить команду c
вустройству я отправляю следующий updateContext в OCB:
curl -s -X POST http://<orionhost>:1026/v1/updateContext
-H 'accept: application/json'
-H 'cache-control: no-cache'
-H 'content-type: application/json'
-H 'fiware-service: lmobile'
-H 'fiware-servicepath: /lmobile_Industry'
-d '{
"contextElements": [
{
"type": "Device",
"isPattern": "false",
"id": "t3",
"attributes": [
{
"name":"c",
"type":"Command",
"value":100
}
]
}
],
"updateAction": "UPDATE"
}'
и получаю следующий ответ об ошибке:
{
"errorCode": {
"code": "404",
"reasonPhrase": "No context element found",
"details": "invalid context provider response"
}
}
В журнале OCB я вижу следующее ПРЕДУПРЕЖДАЮЩЕЕ сообщение: time=Thursday 18 Oct 08:55:54 2018.431Z | lvl=WARN | corr=N/A | trans=N/A | from=N/A | srv=N/A | subsrv=N/A | comp=Orion | op=postQueryContext.cpp[169]:queryForward | msg=Other Error (context provider response to QueryContext is empty)
.В любом случае, updateContext правильно перенаправляется агенту.
В журнале агента (в отладке) я вижу следующее:
iotstack_agent-json.1.xyz@xerus-1 | time=2018-10-18T09:02:33.975Z | lvl=DEBUG | corr=8d2864ec-d2b4-11e8-b445-02420aff0161 | trans=de5680e7-0727-4577-ac44-ddeb59df1f31 | op=IoTAgentNGSI.GenericMiddlewares | srv=lmobile | subsrv=/lmobile_Industry | msg=Request for path [/updateContext] from [<agent_publicip>:<port>] | comp=IoTAgent
iotstack_agent-json.1.xyz@xerus-1 | time=2018-10-18T09:02:33.976Z | lvl=DEBUG | corr=8d2864ec-d2b4-11e8-b445-02420aff0161 | trans=de5680e7-0727-4577-ac44-ddeb59df1f31 | op=IoTAgentNGSI.GenericMiddlewares | srv=lmobile | subsrv=/lmobile_Industry | msg=Body:
iotstack_agent-json.1.xyz@xerus-1 |
iotstack_agent-json.1.xyz@xerus-1 | {
iotstack_agent-json.1.xyz@xerus-1 | "contextElements": [
iotstack_agent-json.1.xyz@xerus-1 | {
iotstack_agent-json.1.xyz@xerus-1 | "type": "Device",
iotstack_agent-json.1.xyz@xerus-1 | "isPattern": "false",
iotstack_agent-json.1.xyz@xerus-1 | "id": "t3",
iotstack_agent-json.1.xyz@xerus-1 | "attributes": [
iotstack_agent-json.1.xyz@xerus-1 | {
iotstack_agent-json.1.xyz@xerus-1 | "name": "c",
iotstack_agent-json.1.xyz@xerus-1 | "type": "Command",
iotstack_agent-json.1.xyz@xerus-1 | "value": "100"
iotstack_agent-json.1.xyz@xerus-1 | }
iotstack_agent-json.1.xyz@xerus-1 | ]
iotstack_agent-json.1.xyz@xerus-1 | }
iotstack_agent-json.1.xyz@xerus-1 | ],
iotstack_agent-json.1.xyz@xerus-1 | "updateAction": "UPDATE"
iotstack_agent-json.1.xyz@xerus-1 | }
iotstack_agent-json.1.xyz@xerus-1 |
iotstack_agent-json.1.xyz@xerus-1 | | comp=IoTAgent
iotstack_agent-json.1.xyz@xerus-1 | time=2018-10-18T09:02:33.978Z | lvl=DEBUG | corr=8d2864ec-d2b4-11e8-b445-02420aff0161 | trans=de5680e7-0727-4577-ac44-ddeb59df1f31 | op=IoTAgentNGSI.DomainControl | srv=lmobile | subsrv=/lmobile_Industry | msg=response-time: 6 | comp=IoTAgent
Здесь я не вижу предупреждений или ошибок, ноникакие команды не передаются в MQTT Broker ни по одной теме (я подписан как на конкретную тему для команд /<apikey>/t3/cmd
, так и на все темы с использованием подстановочного знака #
).