Два nodemcu не могут связаться с Raspberry Pi с помощью mqtt - PullRequest
0 голосов
/ 24 мая 2019

Raspberry pi действует как локальный хост, я пытаюсь отправить данные в raspbberry pi, используя mqtt с узлом mcu по двум различным темам.Например: если x> 10, то я посылаю 1, иначе 0

та же логика, которую я использовал в обоих узлах mcu.

, если я общаюсь только с одним узлом, он получает хороший ответ, но если я соединяюсь стогда оба nodemcu иногда не получают значения в консоли Raspberry Pi.

1 Ответ

0 голосов
/ 24 мая 2019

Это часто зависит как от клиента, так и от используемого брокера, а также от вашей конфигурации каждого из них. Тот факт, что у двух есть проблемы, когда один не предполагает коллизию идентификатора клиента : каждое клиентское устройство MQTT должно иметь свой идентификатор клиента. Если брокер получает подписки от двух клиентов с одинаковым идентификатором, он может отключить одну, обычно первую. Если каждый клиент настроен на повторное подключение, это может привести к бесконечной серии отключений для обоих, каждый из которых подключен половину времени.

Любой посредник, который не отключает дублирующихся клиентов, все равно может не доставить одного, поскольку он использует идентификаторы клиентов для отслеживания клиентов, которым было доставлено сообщение. Первый клиент, который пингует сообщения в своих подписках, получит самое последнее сообщение, а все последующие пропустят это сообщение, поскольку сообщение уже помечено как доставленное этому идентификатору клиента.

Большинство клиентов избегают этих проблем с случайными идентификаторами , но позволяют разработчику установить их вручную. Ваша идентичная логика устанавливает идентификатор клиента? Вы можете проверить, что на самом деле установлено на каждом устройстве, с помощью журналов брокера .

...