多个ESP8266订阅一个RPI 3

时间:2018-08-01 18:40:00

标签: mqtt publish-subscribe esp8266

我无法将2个(及更多)ESP8266订阅给一个RPi3代理。 我用过:

import paho.mqtt.client as mqtt
import datetime

mqtt_topics = ["esp8266-1", "esp8266-2"]

def on_connect(client, userdata, flags, rc):
    print("Connected with result code "+str(rc))

    for topic in mqtt_topics:
     client.subscribe(topic)

def on_message(client, userdata, msg):
    print(datetime.datetime.now())
        print(str(msg.topic)+" "+str(msg.payload))

client = mqtt.Client()
client.on_connect = on_connect
client.connect('localhost', 1883, 60)

try:
    for topic in mqtt_topics:
        client.on_message = on_message
    client.loop_forever()
except KeyboardInterrupt:
        print("CTRL-C: Terminating program.")

它可以正常工作,但只能工作到1 esp。 如果我连接esp8266-1会检查它的值,那么我会连接esp8266-2以获取它的值,并且esp8266-1不再可用(即使我使用esp8266-2)。

如何同时订阅esp8266? 我一次只能有一个。

1 个答案:

答案 0 :(得分:1)

代码需要做一些改动:

BackwardRH

但是,如果一个客户端正常工作,而第二个客户端强制第一个客户端断开连接,则听起来两个客户端的客户端ID相同。所有客户的clientID必须唯一。