Beispiel #1
0
def connect(
    sockid: "socket",
    clientid: "clientids",
    cleansession: "boolean",  #willmsg : "willmsgs",
    #	    username : "******", password : "******"
) -> "connackrc":
    sock = state.sockets[sockid]
    connect = MQTTV3.Connects()
    connect.ClientIdentifier = clientid
    connect.CleanSession = cleansession
    connect.KeepAliveTimer = 60
    #if username:
    #	connect.usernameFlag = True
    #	connect.username = username
    #if password:
    #	connect.passwordFlag = True
    #	connect.password = password
    #if willmsg:
    #	connect.willFlag = True
    #   connect.WillQoS = 0
    #	connect.WillRETAIN = 0
    #   connect.WillTopic = None        # UTF-8
    #	connect.WillMessage = None      # binary
    sock.send(connect.pack())
    time.sleep(0.5)
    checksocket(sockid)
    response = state.clientlist[sockid].packets.pop(
        0)  #MQTTV3.unpackPacket(MQTTV3.getPacket(sock))
    logger.debug("+++connect response", response)
    if response == None or response.returnCode not in [0, 2]:
        raise Exception("Return code " + str(response.returnCode) +
                        " in connack")

    return response.returnCode
Beispiel #2
0
    def connect2(self, host, port, cleansession, keepalive, newsocket,
                 protocolName, willFlag, willTopic, willMessage, willQoS,
                 willRetain, username, password):
        if newsocket:
            try:
                self.sock.close()
            except:
                pass
            self.sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
            self.sock.settimeout(.5)
            self.sock.connect((host, port))

        connect = MQTTV3.Connects()  #mqtt login
        connect.ClientIdentifier = self.clientid
        connect.CleanSession = cleansession
        connect.KeepAliveTimer = keepalive
        if protocolName:
            connect.ProtocolName = protocolName

        if willFlag:
            connect.WillFlag = True
            connect.WillTopic = willTopic
            connect.WillMessage = willMessage
            connect.WillQoS = willQoS
            connect.WillRETAIN = willRetain

        if username:
            connect.usernameFlag = True
            connect.username = username

        if password:
            connect.passwordFlag = True
            connect.password = password

        sendtosocket(self.sock, connect.pack())

        response = MQTTV3.unpackPacket(MQTTV3.getPacket(self.sock))
        if not response:
            raise MQTTV3.MQTTException(
                "connect failed - socket closed, no connack")
        assert response.fh.MessageType == MQTTV3.CONNACK

        self.cleansession = cleansession
        assert response.returnCode == 0, "connect was %s" % str(response)

        if self.cleansession or self.__receiver == None:
            self.__receiver = internal.Receivers(self.sock)
        else:
            self.__receiver.socket = self.sock
        if self.callback:
            id = _thread.start_new_thread(self.__receiver, (self.callback, ))
        return response