Как правильно создать подписку mosquitto с помощью устройства и IoTAgent-UL

В настоящее время я разрабатываю сеть на основе Fiware, в которой у меня есть устройства, которые сообщают через HTTP и JSON через MQTT и работают нормально. Сеть увеличилась, и теперь мне нужно подключить несколько устройств, использующих протокол UltraLight. При этом я столкнулся с некоторыми проблемами.

Я следовал (насколько мне известно) официальной документации, предоставленной FIWARE Foundation на разных сайтах (официальный репозиторий github, readthedocs и т. д.). Я попытался установить новый агент на тот же компьютер, что и агент JSON, и это не сработало (подробнее об этом позже). Чтобы исключить любые конфликты, я использовал другую виртуальную машину, в которой — на этот раз поверх Docker — я развернул новый экземпляр Orion CB, Mosquitto CB, mongo и агент; новый полный стек Fiware, по сути.

После того, как все было развернуто, я создал новую сервисную группу на агенте через остальные API (POST /iot/devices), дал ей ключ API и адрес CB. На этом шаге я оставил поле ресурса пустым, потому что не знаю, какую роль он играет во всей системе. Ответ был 201, как и ожидалось. Следующим шагом было предоставление устройства, которое я сделал, отправив POST в агент/iot/устройства с нужными мне атрибутами и ключом API, упомянутым в последнем абзаце. И снова ответ был 201.

Проблема возникает, когда я пытаюсь опубликовать новое измерение с помощью mosquitto_pub. Команда работает без сбоев, но объект в Орионе не обновляется. При доступе к базе данных Orions (монго) я могу убедиться, что объект был успешно создан, но имеет пустое значение. Более того, проверка логов дает следующее:

mosquitto    | 1559157902: New connection from 10.150.150.173 on port 1883.
mosquitto    | 1559157902: New client connected from 10.150.150.173 as mosqpub|28750-mqtt (p1, c1, k60).
fiware-iot-agent | time=2019-05-29T19:25:02.374Z | lvl=DEBUG | corr=2c8aa6e3-faab-4166-9e20-0b362c165939 | trans=2c8aa6e3-faab-4166-9e20-0b362c165939 | op=IoTAgentNGSI.MongoDBGroupRegister arams ["resource","apikey"] with queryObj {"resource":"/iot/d","apikey":"apikeymia"} | comp=IoTAgent
fiware-iot-agent | time=2019-05-29T19:25:02.381Z | lvl=DEBUG | corr=2c8aa6e3-faab-4166-9e20-0b362c165939 | trans=2c8aa6e3-faab-4166-9e20-0b362c165939 | op=IoTAgentNGSI.MongoDBGroupRegister elds [["resource","apikey"]] not found: [{"resource":"/iot/d","apikey":"apikeymia"}] | comp=IoTAgent
fiware-iot-agent | time=2019-05-29T19:25:02.382Z | lvl=ERROR | corr=2c8aa6e3-faab-4166-9e20-0b362c165939 | trans=2c8aa6e3-faab-4166-9e20-0b362c165939 | op=IOTAUL.Common.Binding | srv=n/a | essing device measures [/apikeymia/motion003/attrs] | comp=IoTAgent
mosquitto    | 1559157902: Client mosqpub|28750-mqtt disconnected.

после каждой попытки публикации нового измерения.

Любая помощь будет оценена

Отступ текста четыре пробела для форматирования как код. Я отправил правку.

Sean 29.05.2019 22:41

Спасибо! Хорошо знать

Juan Andrés Mezzera 30.05.2019 16:40
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
2
70
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

In this step I left the resource field empty, because I don´t really know what role does it play in the whole system

Глядя на логи:

[...] queryObj {"resource":"/iot/d","apikey":"apikeymia"} | comp=IoTAgent
[...] not found: [{"resource":"/iot/d","apikey":"apikeymia"}] | comp=IoTAgent

Я бы предложил использовать "/iot/d" вместо пустого поля resource. Может быть, это могло бы решить проблему.

Я попробую. Спасибо за быстрый ответ

Juan Andrés Mezzera 30.05.2019 16:40

Судя по всему, он работал нормально. Я попытаюсь воспроизвести это в производственной среде. Если это сработает, я отмечу ответ как правильный. Не могли бы вы объяснить, какова роль ресурса? И должен ли я каждый раз использовать значение по умолчанию? заранее спасибо

Juan Andrés Mezzera 30.05.2019 16:56

Это сработало! Спасибо! Если бы вы могли ответить на мой вопрос в последнем комментарии, я был бы очень признателен!

Juan Andrés Mezzera 30.05.2019 18:37

Поведение подготовки MQTT связано со следующим проблема — в какой-то момент между выпусками требуемое значение по умолчанию переключалось между пустой и /йот/д.

Jason Fox 03.06.2019 12:07

Другие вопросы по теме