Подпишитесь, чтобы получать сообщения, не работающие в среде роботов MQTT Library - PullRequest
0 голосов
/ 03 декабря 2018

Я новичок в Robot Framework и MQTT.Я вызвал настройку подписчика / издателя с помощью mosquitto.Я написал код для публикации в подписанной теме.Код для публикации работает нормально, и я могу увидеть вывод в окне подписчика.Тем не менее, ключевое слово подписки не работает для меня.

Я пробовал и подписаться и подписаться и проверить.В первом случае я получаю сообщения = [], а во втором - «Ожидаемая полезная нагрузка не поступила в тему».Скриншот с кодами прилагается.

Subscribe and get messages
    Subscribe   MQTTtest2   qos=2   timeout=1   limit=0
    I Publish an MQTT request
    ${messages}=    Subscribe   MQTTtest2   qos=2   timeout=5   limit=0
    log to console  Messages=${messages}

I Publish an MQTT request
    connect   127.0.0.1
    publish  MQTTtest2   testmessage  2  ${false}
    disconnect

MQTT_SUBSCRIBE_AND_VALIDATE
[Tags]  mqtt
[Setup]     Connect     127.0.0.1
I SUBSCRIBE to a Topic
[Teardown]  Disconnect

I SUBSCRIBE to a Topic
#connect  ${MQTT.hostname}
subscribe and validate  ${MQTT.topic}  ${MQTT.qos}  ${MQTT.message}  5
#disconnect

Подскажите, пожалуйста, что я делаю не так? Подписаться Опубликовать

1 Ответ

0 голосов
/ 13 января 2019

Вы также должны подключиться к брокеру в случае операции подписки также с ключевым словом Connect.

В настоящее время вы не установили соединение ни перед одним из ключевых слов Subscribe.В вашем I Publish an MQTT request вы делаете соединение таким образом, чтобы оно было успешным, но затем вы также делаете разъединение, чтобы следующая подписка снова не удалась.

Если вы измените свой тест следующим образом:

*** Keywords ***
Subscribe And Get Messages
    Subscribe   topic=MQTTtest2   qos=2   timeout=5   limit=0
    I Publish An MQTT Request
    ${messages}=    Subscribe   topic=MQTTtest2   qos=2   timeout=5   limit=0
    Log To Console  Messages=${messages}

I Publish An MQTT Request
    Publish  topic=MQTTtest2   testmessage  2  ${false}

*** Test Cases ***
MQTT test
    [Tags]  mqtt
    [Setup]     Connect     127.0.0.1
    Subscribe And Get Messages
    [Teardown]  Disconnect

Он должен работать правильно:

==============================================================================
Robot Framework.My Test
==============================================================================
MQTT test                                                             .Messages=[b'testmessage']
MQTT test                                                             | PASS |

Также кажется, что библиотека MQTT регистрируется как новый клиент с каждым Connect, поэтому, если вы делаете отдельное подключение / отключение для каждой подписки и публикации, это, вероятно, не будетработать на вас, как вы ожидаете.

...