Невозможно опубликовать sh для второго брокера с помощью библиотеки Paho python - PullRequest
0 голосов
/ 25 апреля 2020

У меня проблема с кодом, и мне нужна ваша помощь с ним. Я создаю сценарий python, который имеет два экземпляра клиента mqtt (mqtt c, mqttc1) для подключения к двум брокерам (два разных IP-адреса). Первый клиентский экземпляр должен подключиться к первому посреднику и подписаться на сообщение topi c и распечатать topi c и сообщение с помощью обратного вызова on_message. Второй экземпляр клиента должен подключаться ко второму посреднику и публиковать sh ко второму посреднику каждое сообщение, полученное от первого посредника при обратном вызове on_message. Я использую библиотеку paho python, и проблема в том, что я не могу опубликовать sh во втором посреднике под командой print при обратном вызове on_message, используя второй экземпляр клиента mqttc1.publi sh (msg.topi c, msg.payload, qos = 1) или mqttc1.publi sh (MQTT_Topi c, msg.payload, qos = 1)

    enter code here
# Import package
import paho.mqtt.client as mqtt
import ssl

# Define Variables
MQTT_PORT = 1883
MQTT_KEEPALIVE_INTERVAL = 45
MQTT_TOPIC = "temperature"


MQTTC_HOST = "198.555.0.9"
MQTTC1_HOST = "195.626.0.8"


# Define on connect event function
# We shall subscribe to our Topic in this function
def on_connect(mosq, obj, rc):
    mqttc.subscribe(MQTT_TOPIC, 0)

# Define on_message event function. 
# This function will be invoked every time,
# a new message arrives for the subscribed topic 
def on_message(mosq, obj, msg):
    print "Topic: " + str(msg.topic)
    print "QoS: " + str(msg.qos)
    print "Payload: " + str(msg.payload)
    mqttc1.publish(msg.topic ,msg.payload ,qos=1)
    mqttc1.publish(MQTT_Topic ,msg.payload ,qos=1)

# Initiate MQTT Client
mqttc = mqtt.Client()
mqttc1 = mqtt.Client()

# Assign event callbacks
mqttc.on_connect = on_connect
mqttc.on_message = on_message


# Connect with First MQTT Broker
mqttc.connect(MQTTC_HOST, MQTT_PORT, MQTT_KEEPALIVE_INTERVAL)

# Continue monitoring the incoming messages for subscribed topic
mqttc.loop_start()

# Connect with Second MQTT Broker
mqttc1.connect(MQTTC1_HOST, MQTT_PORT, MQTT_KEEPALIVE_INTERVAL)

# Continue monitoring the incoming messages for subscribed topic
mqttc1.loop_start()
...