#sensors #fiware #actuator
#датчики #fiware #привод
Вопрос:
Моя конфигурация включает orion, JSON IoT Agent и MongoDB. Я хочу создать привод лампы Fiware, и я также хочу иметь статус вкл / выкл (как датчик).
На данный момент я использую запрос на ИСПРАВЛЕНИЕ с телом (форма ORION): сначала с помощью команды on:
{
"on": {
"type" : "command",
"value" : ""
}
}
А затем с помощью команды off:
{
"off": {
"type" : "command",
"value" : ""
}
}
Когда я получаю что-либо из вышеперечисленного, я отвечаю с фиктивного устройства 200 OK.
Приведенное выше в моей конфигурации делает метки включения и выключения ожидающими:
{
"id": "urn:ngsi-ld:Lamp:001",
"type": "Lamp",
"TimeInstant": "2020-11-04T22:42:37.00Z",
"category": [
"actuator",
"sensor"
],
"controlledProperty": "lamp",
"function": [
"onOff",
"sensing"
],
"off_info": " ",
"off_status": "PENDING",
"on_info": " ",
"on_status": "PENDING",
"refStore": "urn:ngsi-ld:Store:001",
"state": " ",
"supportedProtocol": [
"JSON"
],
"supportedUnits": "My Unit 2",
"on": "",
"off": ""
}
Я предполагаю, что я что-то упустил, так есть ли какой-либо ответ, который я должен отправить обратно в json IoT Agent, чтобы заставить один из двух тегов перестать ожидать? Должен ли я обновлять состояние или информацию по пути?
P.S Я ожидал получить такой ответ:
{
"id": "urn:ngsi-ld:Lamp:001",
"type": "Lamp",
"TimeInstant": "2020-11-04T22:42:37.00Z",
"category": [
"actuator",
"sensor"
],
"controlledProperty": "lamp",
"function": [
"onOff",
"sensing"
],
"off_info": " ",
"off_status": "PENDING",
"on_info": " ",
"on_status": "OFF",
"refStore": "urn:ngsi-ld:Store:001",
"state": " ",
"supportedProtocol": [
"JSON"
],
"supportedUnits": "My Unit 2",
"on": "",
"off": ""
}
Ответ №1:
Поток команды можно увидеть ниже:
Предполагая, что ваша команда достигла лампы и она включилась, результат необходимо передать обратно в агент Интернета вещей. Для агента интернета вещей JSON полезная нагрузка выглядит примерно так:
{"on" : "OK"}
Где ключ — это имя команды, а значение — статус. Я предполагаю, что ваше устройство просто отвечает 200 OK без полезной нагрузки, поэтому агент IoT не знает, какая команда была запущена.
Обратите внимание, что в случае распределенной сети (например, MQTT или AMPQ) ответ будет размещен асинхронно в другой теме, поэтому команда может быть оставлена в PENDING
состоянии на некоторое время.
Комментарии:
1. Отличное объяснение! Ранее я не добавлял полезную нагрузку в свой ответ, и это стало причиной того, что статус ожидания остался навсегда. Есть ли какая-либо ссылка, содержащая допустимые полезные нагрузки агента IoT JSON?
2. Документацию можно найти здесь — однако я ничего не смог найти о полезных нагрузках результатов команд.