Как отправить данные из словаря через брокера mqtt
В основном у меня есть два Raspberry Pi, и я хочу, чтобы один публиковал данные, полученные из словаря, в файле Python, а другой подписывался на эти словарные данные. Извиняюсь, если это очень мягкий вопрос, но я не могу найти в интернете никакой информации по этому поводу.
2 ответа
Я бы порекомендовал вам прочитать базовый учебник по MQTT, если вы этого еще не сделали. Это поможет вам решить, какими должны быть ваши темы и данные.
Чтобы начать, вот пример того, как вы можете опубликовать и подписаться на ваш вариант использования. Издатель может перебирать ключи в словаре и публиковать данные в теме "keys/$key_name", причем сообщением является значение этого ключа в словаре.
Подписчик может подписаться на тему "keys/#". Таким образом, подписчик получит все ключи и соответствующие данные и восстановит словарь.
Существует много других способов публикации данных в зависимости от характера данных в вашем словаре.
Если вы хотите отправить словарь напрямую из сценария python на узле A в сценарий python на узле B, есть способ.
- Преобразуйте свой словарь в строку.
- Отправьте строку в качестве полезной нагрузки от хоста A к брокеру.
- Подпишитесь на брокера с Host B и получите полезную нагрузку.
- Оцените строку с помощью ast.literal_eval(), которая преобразует ее обратно в словарь.
Если это объяснение неясно, я мог бы опубликовать пример кода.
Я бы, вероятно, использовал вместо этого JSON или несколько тем, но описанная выше процедура будет работать.