Можем ли мы добавить сертификаты ssl-сервера через MQTT, используя mosquitto в качестве брокера, и установить соединение с переменным увеличением нет.нескольких клиентов? - PullRequest
0 голосов
/ 11 июля 2019

Как установить соединение MQTT с несколькими клиентами, добавляющими сертификаты ssl-сервера? В журналах y максимальное количество клиентов составляет 1. Но без ssl-сертификатов количество клиентов можно очень легко увеличить. Это часть моего кода.

class MqttClient(mqtt.Client):

    """Mqtt client inherit from mqtt.Client"""

    ## constructor
    def __init__(self, *arg):
        super(MqttClient, self).__init__(arg[0])
        ## on_publish function
        self.on_publish = OnPublish
        ## on_connect function
        self.on_connect = OnConnect
        ## on_log function
        self.on_log = OnLog

        ## payload
        self.payload = ""

        ## name of client
        self.name = arg[0]

        ## broker ip address
        self.broker_ip = arg[1]

        ## broker port number
        self.broker_port = arg[2]

        ## payload sending time
        self.send_time = 0

        ## payload size
        self.payload_size = 0
        self.broker = "khanchi"

    ## return name of client
    def getName(self):
        return self.name

    ## return payload sending time
    def getSendTime(self):
        return self.send_time

    ## return payload size
    def getPayloadSize(self):
        return self.payload_size

    ## connect to broker
    def ConnectToBroker(self):
        try:
            print("connecting to broker(" + self.broker_ip +")")
            self.connect(self.broker_ip, self.broker_port)
            self.loop_start()
            return True
        except Exception as Error:
            print(Error)
            self.disconnect()
            return False

    ## start sending payload until client get disconnected
    def start(self):
        try:
            while True:
                self.payload += read_file("p.txt")
                self.send_time = int(os.popen("date +%s").read().strip())
                self.payload_size = sys.getsizeof(self.payload)
                print(sys.getsizeof(self.payload))
                self.publish("/", self.payload)
                time.sleep(delay)
        except Exception as Error:
            print(Error)
            self.disconnect()


class Mythread(threading.Thread):
    """Mythread inherit from threading.Thread
    use to create thread for mqtt-client
    """
    def __init__(self, client):
        super (Mythread, self).__init__()
        self.client = client

    ## run 
    def run(self):
        self.client.tls_set('/etc/mosquitto/certs/ca.crt')
        self.client.tls_insecure_set(True)
        if self.client.ConnectToBroker():
            self.client.start()
...