Python - MQTT suscripciones múltiples - limitaciones

votos
0

Tengo PI N-frambuesa de y me gustaría que cada uno de ellos para suscribirse al resto de ellos, ya que todos actúan como brokes. Servidores y clientes funciona perfectamente, pero me gustaría saber, si hay alguna limitación. Tengo la intención de ejecutar los scripts SUSCRIPCION en hilos. Estos son los requisitos:

  • Velocidad (publico algo y muchas pis recibo de mensajes a la vez )
  • suscripciones ilimitadas (I quieren hasta 50 de pi en la red)

La idea es crear red descentralizada. Lo anterior puede ser fácilmente sustituida por pi especial que podría actuar como unidad centralizada por lo que todos los IP suscribirse a este pi especial y todos recibirían mensaje en particular al mismo tiempo. Pero prefiero arquitectura descentralizada.

¿Es posible, o si hay algún problema en la red? ps: no tengo suficiente Pi de probarlo.

Voy a adjuntar código con clase suscripción. Funciona, pero lo pongo aquí, porque no quiero sólo para hacer una pregunta, pero al menos contribuir. Es una misma clase que utilizo para suscribirse

import paho.mqtt.client as mqtt
import threading
import json
# Define Variables
MQTT_BROKER = 
MQTT_PORT = 1883
MQTT_KEEPALIVE_INTERVAL = 45
MQTT_TOPIC = 

class sub:
    def __init__(self,MQTT_TOPIC,MQTT_BROKER, MQTT_PORT,MQTT_KEEPALIVE_INTERVAL,transport = ''):
        self.MQTT_TOPIC = MQTT_TOPIC
        self.MQTT_BROKER =MQTT_BROKER
        self.MQTT_PORT = MQTT_PORT
        self.MQTT_KEEPALIVE_INTERVAL = MQTT_KEEPALIVE_INTERVAL
        # Initiate MQTT Client
        if transport == 'websockets':
            self.mqttc = mqtt.Client(transport='websockets')
            print('Here')
        else:
            self.mqttc = mqtt.Client()
        self.load = True
        tr = threading.Thread(target=self.start)
        tr.daemon = True
        tr.start()



    # Define on_connect event Handler
    def on_connect(self,selfs,mosq, obj, rc):
        #Subscribe tox a the Topic
        self.mqttc.subscribe(self.MQTT_TOPIC, 0)

    # Define on_subscribe event Handler
    def on_subscribe(self,mosq, obj, mid, granted_qos):
        print(Subscribed to MQTT Topic)

    # Define on_message event Handler
    def on_message(self,mosq, obj, msg):
        print(msg.payload)
        if self.load == True:
            msg.payload = json.loads(msg.payload)

    def start(self):
        # Initiate MQTT Client
        #self.mqttc = mqtt.Client()

        # Register Event Handlers
        self.mqttc.on_message = self.on_message
        self.mqttc.on_connect = self.on_connect
        self.mqttc.on_subscribe = self.on_subscribe

        # Connect with MQTT Broker
        self.mqttc.connect(MQTT_BROKER, MQTT_PORT, MQTT_KEEPALIVE_INTERVAL )

        # Continue the network loop
        self.mqttc.loop_forever()


s=sub(MQTT_TOPIC,MQTT_BROKER,MQTT_PORT,MQTT_KEEPALIVE_INTERVAL)
Publicado el 07/11/2018 a las 22:45
fuente por usuario
En otros idiomas...                            

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more