Изменить атрибут на устройстве с помощью IOT-агента Json - PullRequest
0 голосов
/ 25 сентября 2018

Я использую IOT-агент JSON с привязкой MQTT

У меня есть сенсорный привод, зарегистрированный в orion с помощью iot-agent, и я создал подписку.

Если стороннее приложение изменяет значение датчика, orion должен отправить на устройство информацию iot-agent и iot-agent.

, например, если у меня есть 3 атрибута внутри датчика и одиниз них управляет клапаном.

В orion этот атрибут имеет значение true или false.

если атрибут изменен в orion, его необходимо отправить iot-agent и iot-agent на устройство, чтобы закрытьили откройте клапан.

дополнительная информация:

Программное обеспечение состоит из двух компонентов Fiware Generic Enable.

iot-agent JSON: https://github.com/telefonicaid/iotagent-json Fiware-orionCB: https://github.com/telefonicaid/fiware-orion

Возможно ли это?

1 Ответ

0 голосов
/ 04 октября 2018

Официального руководства по подключению JSON IoT Agent к устройству через MQTT не существует, но очень похоже на Ultralight IoT Agent

IoT Devices.либо:

  • датчики - считывание измерений из реального мира
  • приводы - изменение состояния мира
  • или оба

Ваша проблема здесь в том, что вы не можете заставить Орион напрямую обновлять атрибут / состояние датчика .Атрибуты объекта в Context Broker представляют входящее состояние датчика - то есть измерения от этого датчика .

Например, для датчика , считывающего состояниеклапана это может быть "open: "true"

Чтобы обновить привод , вам нужно будет отправить команду , а не изменить значение.

Вы должны настроить команду при подготовке устройства (предполагается, что у вас уже есть услуга):

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" : ""
  }
}'

В зависимости от того, как вы подготовили устройства, вам также может понадобиться зарегистрировать команду - хотя это может не произойтибыть необходимым.

...