Подписаться на две темы MQTT в скрипте Python - PullRequest
0 голосов
/ 11 февраля 2019

У меня есть сценарий Python, настроенный на тему в MQTT, работает ли он нормально.

import paho.mqtt.client as mqtt #import the client1
import time
import json
import requests

def on_log(client, userdata, level, buf) :
    #print("log: "+buf)
    k=0

def on_connect(client, userdata, flags, rc) :
     if rc==0:
     print("connected ok")
else:
     print("not connected", rc)


def on_disconnect(client, userdata, flags, rc=0) :
    print("disconnect result code "+str(rc))


def on_message(client,userdata,msg) :
   global m_decode
   topic=msg.topic
   m_decode=str(msg.payload.decode("utf-8","ignore"))
   time.sleep(1)

   lora_s = str(m_decode)
   lora = {"lora_tram":lora_s}
   resp = requests.post('http://51.75.120.146/lora_tram_reception.php', data = lora)


broker_address="127.0.0.1:1883"
client = mqtt.Client("paca") #create new instance
client.on_connect=on_connect
client.on_disconnect=on_disconnect
client.on_log=on_log
client.on_message=on_message

print ("cnct to broker", broker_address)
client.connect("127.0.0.1", 1883, 60)
client.subscribe("gateway/a555b555c555d555/rx")
client.loop_forever()

И я хотел бы подписаться на другую тему в то же время!Возможно ли это сделать?

Я пытаюсь добавить client.subscribe ("шлюз / новая тема / rx") в:

client.subscribe("gateway/a555b555c555d555/rx")

И это похоже на работу, но я не уверен, если это такмы кодируем несколько тем.

Ответы [ 2 ]

0 голосов
/ 12 февраля 2019

Вы также можете подписаться на несколько тем в одном сообщении MQTT.

client.subscribe([("gateway/a555b555c555d555/rx", 0), ("gateway/new topic/rx", 0)])

https://github.com/eclipse/paho.mqtt.python#subscribe-unsubscribe

0 голосов
/ 11 февраля 2019

Вызов подписки несколько раз на разные темы - это прекрасно, вам просто нужно выяснить, из какой темы это сообщение в обратном вызове on_message.

Вы можете сделать это с помощью оператора if, чтобы проверитьmsg.topic value и затем обработайте сообщение соответствующим образом.

Возможно, вам также следует переместить вызовы на subscribe на on_connect callback

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...