FIWARE команды от CB до устройства Ultralight 2.0 - PullRequest
0 голосов
/ 03 октября 2019

Мне нужно отправлять команды из FIWARE CB на устройство UltraLight 2.0 через агента IoT через HTTP (режим опроса). Хотя в этом руководстве объясняется, как подготовить команды для конкретного устройства:

https://fiware -iotagent-ul.readthedocs.io / en / latest / usermanual / index.html

Я пытаюсь подготовить пару команд (no2_offset и no2_factor) для всей группы услуг следующим образом:

HTTP POST http://localhost:4041/iot/services

{
  "services": [
  {
    "apikey": "si95g7noxpmah9cbx9ggoe36v7",
    "protocol": ["IoTA-UL"], "cbroker": "http://orion:1026",
    "entity_type": "myType",
    "resource": "/iot/d",
    "attributes": [
    {
      "object_id": "t",
      "name": "temperature",
      "type": "Number"
    },
    {
      "object_id": "h",
      "name": "humidity",
      "type": "Number"
    },
    {
      "object_id": "no2",
      "name": "NO2",
      "type": "Number"
    }],
    "commands": [
    {
      "object_id": "no2off",
      "name": "no2_offset",
      "type": "command"
    },
    {
      "object_id": "no2fac",
      "name": "no2_factor",
      "type": "command"
    }]
  }
]}

CB принимает вышеуказанный запрос без проблем. Затем я запрашиваю объект в указанной выше сервисной группе и получаю следующий ответ:

[
    {
        "id": "myServicePath:DEVICE_807D3AF39E18",
        "type": "myType",
        "NO2": {
            "type": "Number",
            "value": 3.76,
            "metadata": {
                "TimeInstant": {
                    "type": "DateTime",
                    "value": "2019-10-02T15:56:35.00Z"
                }
            }
        },
        "TimeInstant": {
            "type": "DateTime",
            "value": "2019-10-02T15:56:35.00Z",
            "metadata": {}
        },
        "humidity": {
            "type": "Number",
            "value": 42.73,
            "metadata": {
                "TimeInstant": {
                    "type": "DateTime",
                    "value": "2019-10-02T15:56:35.00Z"
                }
            }
        },
        "no2_factor_info": {
            "type": "commandResult",
            "value": " ",
            "metadata": {}
        },
        "no2_factor_status": {
            "type": "commandStatus",
            "value": "PENDING",
            "metadata": {
                "TimeInstant": {
                    "type": "DateTime",
                    "value": "2019-10-02T15:36:21.00Z"
                }
            }
        },
        "no2_offset_info": {
            "type": "commandResult",
            "value": " ",
            "metadata": {}
        },
        "no2_offset_status": {
            "type": "commandStatus",
            "value": "PENDING",
            "metadata": {
                "TimeInstant": {
                    "type": "DateTime",
                    "value": "2019-10-02T14:40:56.00Z"
                }
            }
        },
        "temperature": {
            "type": "Number",
            "value": 26.49,
            "metadata": {
                "TimeInstant": {
                    "type": "DateTime",
                    "value": "2019-10-02T15:56:35.00Z"
                }
            }
        },
        "no2_offset": {
            "type": "string",
            "value": "",
            "metadata": {}
        },
        "no2_factor": {
            "type": "string",
            "value": "",
            "metadata": {}
        }
    }
]

Обе команды вместе с некоторыми вещами * _info и * _status интегрированы в остальные атрибуты. Все выглядит хорошо для меня, за исключением строки type = вместо type = command. В любом случае, когда я обновляю сущность новым значением команды, я никогда не получаю команду на стороне устройства (тело всегда пусто), хотя получение сущности действительно показывает обновление.

Есть идеи? Поддерживаются ли команды инициализации при создании групп обслуживания?

Заранее благодарим за ваше время,

Даниэль.

...