Я развернул стек iot с помощью докера. Это использованные контейнеры:
- fiware / Орион: 2.0.0
- fiware / iotagent-JSON: 1.8.0
[другие контейнеры, не вовлеченные в проблему ...]
Документация сверяется:
Шаг 1: Я зарегистрировал следующие объекты в брокере контекста Orion :
curl -X POST \
http://localhost:1026/v2/op/update/ \
-H 'Content-Type: application/json' \
-H 'fiware-service: test' \
-H 'fiware-servicepath: /' \
-d '{
"actionType": "append",
"entities": [{
"type": "Area",
"id": "first:Area:001",
"name": {
"type": "Text",
"value": "First area"
}
}, {
"type": "Area",
"id": "second:Area:002",
"name": {
"type": "Text",
"value": "Second area"
}
}]
}'
Шаг 2: Я зарегистрировал следующее устройство, связанное с Area first: Area: 001 на IoT agent :
curl -X POST \
http://localhost:4041/iot/devices \
-H 'Content-Type: application/json' \
-H 'fiware-service: test' \
-H 'fiware-servicepath: /' \
-d '{
"devices": [{
"device_id": "device001",
"entity_name": "first:Area:001:IoTDevice:001",
"entity_type": "IoTDevice",
"transport": "HTTP",
"protocol": "IoTA-JSON",
"endpoint": "http://context-producer:3000/iot/iot-device/device001",
"commands": [{
"name": "ping",
"type": "command"
}],
"attributes": [{
"object_id": "c",
"name": "count",
"type": "Number"
}],
"static_attributes": [{
"name": "refArea",
"type": "Relationship",
"value": "first:Area:001"
},
{
"name": "name",
"type": "Text",
"value": "IoT Device 001"
}
]
}]
}'
Запрос 1: Когда вы выполняете шаг 2 , тип регистрации сущности автоматически генерируются в посреднике контекста Orion
curl -X GET \
http://localhost:1026/v2/registrations/ \
-H 'fiware-service: test' \
-H 'fiware-servicepath: /'
Результат:
[
{
"id": "5bd6dbb2bef7081490c96eb2",
"dataProvided": {
"entities": [
{
"id": "first:Area:001:IoTDevice:001",
"type": "IoTDevice"
}
],
"attrs": [
"ping"
]
},
"provider": {
"http": {
"url": "http://iotagent-json:4041"
},
"supportedForwardingMode": "all",
"legacyForwarding": true
},
"status": "active"
}
]
Тест 1: Получение объектов IoTDevice-типа , связанных с Районом * first: 1058 *: Area: 001
curl -X GET \
'http://localhost:1026/v2/entities?options=keyValues&q=refArea==first:Area:001' \
-H 'fiware-service: test' \
-H 'fiware-servicepath: /'
OK Ожидаемый результат:
[
{
"id": "first:Area:001:IoTDevice:001",
"type": "IoTDevice",
"TimeInstant": " ",
"count": 0,
"name": "IoT Device 001",
"ping_info": " ",
"ping_status": "UNKNOWN",
"refArea": "first:Area:001",
"ping": ""
}
]
Тест 2: Получение IoTDevice-типа сущностей, связанных с Районом секунда: Площадь: 001
curl -X GET \
'http://localhost:1026/v2/entities?options=keyValues&q=refArea==second:Area:001' \
-H 'fiware-service: test' \
-H 'fiware-servicepath: /'
ОШИБКА неожиданная Результат:
[
{
"id": "first:Area:001:IoTDevice:001",
"type": "IoTDevice",
"ping": ""
}
]
Ожидаемый результат был [] или пуст, но запрос возвратил результаты, которые, похоже, получены от регистрационного типа сущностей. Это происходит только в том случае, если вставлены устройства с атрибутами типа command . Например, команда ping .
Итак, как этого можно избежать?