Python paho.mqtt.client 模块,MQTTv311() 实例源码

我们从Python开源项目中,提取了以下9个代码示例,用于说明如何使用paho.mqtt.client.MQTTv311()

项目:Roomba980-Python    作者:NickWaterton    | 项目源码 | 文件源码
def setup_client(self):
        if self.client is None:
            if not HAVE_MQTT:
                print("Please install paho-mqtt 'pip install paho-mqtt' "
                      "to use this library")
                return False
            self.client = mqtt.Client(
                client_id=self.blid, clean_session=self.clean,
                protocol=mqtt.MQTTv311)
            # Assign event callbacks
            self.client.on_message = self.on_message
            self.client.on_connect = self.on_connect
            self.client.on_publish = self.on_publish
            self.client.on_subscribe = self.on_subscribe
            self.client.on_disconnect = self.on_disconnect

            # Uncomment to enable debug messages
            # client.on_log = self.on_log

            # set TLS, self.cert_name is required by paho-mqtt, even if the
            # certificate is not used...
            # but v1.3 changes all this, so have to do the following:

            self.log.info("Seting TLS")
            try:
                self.client.tls_set(
                    self.cert_name, cert_reqs=ssl.CERT_NONE,
                    tls_version=ssl.PROTOCOL_TLSv1)
            except ValueError:   # try V1.3 version
                self.log.warn("TLS Setting failed - trying 1.3 version")
                self.client._ssl_context = None
                context = ssl.SSLContext(ssl.PROTOCOL_TLSv1)
                context.verify_mode = ssl.CERT_NONE
                context.load_default_certs()
                self.client.tls_set_context(context)

            # disables peer verification
            self.client.tls_insecure_set(True)
            self.client.username_pw_set(self.blid, self.password)
            return True
        return False
项目:Roomba980-Python    作者:NickWaterton    | 项目源码 | 文件源码
def setup_client(self):
        if self.client is None:
            if not HAVE_MQTT:
                print("Please install paho-mqtt 'pip install paho-mqtt' "
                      "to use this library")
                return False
            self.client = mqtt.Client(
                client_id=self.blid, clean_session=self.clean,
                protocol=mqtt.MQTTv311)
            # Assign event callbacks
            self.client.on_message = self.on_message
            self.client.on_connect = self.on_connect
            self.client.on_publish = self.on_publish
            self.client.on_subscribe = self.on_subscribe
            self.client.on_disconnect = self.on_disconnect

            # Uncomment to enable debug messages
            # client.on_log = self.on_log

            # set TLS, self.cert_name is required by paho-mqtt, even if the
            # certificate is not used...
            # but v1.3 changes all this, so have to do the following:

            self.log.info("Seting TLS")
            try:
                self.client.tls_set(
                    self.cert_name, cert_reqs=ssl.CERT_NONE,
                    tls_version=ssl.PROTOCOL_TLSv1)
            except ValueError:   # try V1.3 version
                self.log.warn("TLS Setting failed - trying 1.3 version")
                self.client._ssl_context = None
                context = ssl.SSLContext(ssl.PROTOCOL_TLSv1)
                context.verify_mode = ssl.CERT_NONE
                context.load_default_certs()
                self.client.tls_set_context(context)

            # disables peer verification
            self.client.tls_insecure_set(True)
            self.client.username_pw_set(self.blid, self.password)
            return True
        return False
项目:aws-iot-python    作者:vjammar    | 项目源码 | 文件源码
def publishRaceTimes(hexUID, name, completionTime):
    try:
        # setup the log manager
        myLog = logManager.logManager("main.py", "./log/")
        myLog.disableFileOutput()
        myLog.enableConsolePrint()

        # setup the mqttCore variable
        myPythonMQTTCore = mqttCore.mqttCore("rfid-aws", True, mqtt.MQTTv311, myLog)
        myPythonMQTTCore.setConnectDisconnectTimeoutSecond(90)
        myPythonMQTTCore.setMQTTOperationTimeoutSecond(10)
        myPythonMQTTCore.config(thingHost, 8883, rootCA[0], privateKey[0], certificate[0])

        # connect to the IoT service
        myPythonMQTTCore.connect()

        # get the current date and time and set the publish payload
        now = datetime.datetime.now(pytz.timezone(timezone)).strftime('%Y-%m-%dT%H:%M:%S.%f%z')
        payload = json.dumps({'uid' : hexUID, 'name' : name, 'raceTime' : completionTime, 'createdDateTime' : now })

        # publish to the topic
        myPythonMQTTCore.publish(publishTopic, payload, 0, False)

        # disconnect from the IoT service
        myPythonMQTTCore.disconnect()

        # display a success message
        displayPublishSuccess()
    except AWSIoTExceptions.publishTimeoutException:
        print "Syncing reported data: A Publish Timeout Exception happened."
    except AWSIoTExceptions.publishError:
        print "Syncing reported data: A Publish Error happened."
    except Exception as e:
        print e

# Function to display a success message to the user
# after the race time is published to the AWS IoT service.
项目:python-mqtt-client-shell    作者:bapowell    | 项目源码 | 文件源码
def __init__(self, client_id="", clean_session=True, protocol=None, transport="tcp"):
        """Initialize ClientArgs with default or passed-in values."""
        self._default_client_id = ("paho-" + str(random.randrange(1000, 10000)) + "-" + socket.gethostname())[:23]
        self.client_id = client_id
        self.clean_session = clean_session
        self._default_protocol = mqtt.MQTTv311
        self.protocol = protocol
        self.transport = transport
项目:WeatherStation    作者:UBayouski    | 项目源码 | 文件源码
def connect_device(self):
        """
        Connects to device using provided connection arguments

        Returns: True/False depending on the result of connection
        """
        if not self.config:
            self.parse_config()

        self.client = mqtt.Client(clean_session=True, protocol=mqtt.MQTTv311, userdata=self)
        self.client.username_pw_set(self.serial_number, self._hashed_password())
        self.client.on_connect = self.on_connect
        self.client.on_disconnect = self.on_disconnect
        self.client.on_message = self.on_message
        self.client.connect(self.ip_address, port=self.port_number)
        self.client.loop_start()

        try:
            if self.connected.get(timeout=self.connectivity_timeout):
                self._request_state()

                try:
                    self.state_data = self.state_data_available.get(timeout=5)
                    self.sensor_data = self.sensor_data_available.get(timeout=5)

                    # Return True in case of successful connect and data retrieval
                    return True
                except Empty:
                    self.errors.append(DataRetrieveError())
        except Empty:
            self.errors.append(ConnectionError(99))

        # If any issue occurred return False
        self.client = None
        return False
项目:robophery    作者:cznewt    | 项目源码 | 文件源码
def send_data(self, data):
        final_data = {}
        for name, datum in data.items():
            names = name.split('.')
            if 'avg_value' in datum:
                if names[0] in final_data:
                    final_data[names[0]][names[1]] = datum['avg_value']
                else:
                    final_data[names[0]] = {names[1]: datum['avg_value']}
        for name, datum in final_data.items():
            topic = "{0}/{1}".format(self._publish_topic, name)
            if self._username is not None:
                auth = {
                    'username': self._username,
                    'password': self._password
                }
            else:
                auth = None
            publish.single(topic,
                           payload=self._to_string(datum),
                           hostname=self._host,
                           client_id=self._manager._name,
                           auth=auth,
                           # tls=tls,
                           port=self._port,
                           protocol=mqtt.MQTTv311)
            self._log.debug(
                "Published message {0} to {1}/{2}.".format(datum, self._host, topic))
项目:hapi    作者:mayaculpa    | 项目源码 | 文件源码
def __init__(self, sm):
        self.rtuid = ""
        self.name = ""
        self.broker_name = None
        self.broker_ip = None
        self.client = mqtt.Client(clean_session=True, userdata=None, protocol=mqtt.MQTTv311)
        self.client.on_connect = self.on_connect
        self.client.on_message = self.on_message
        self.client.on_disconnect = self.on_disconnect
        self.smart_module = sm
        self.is_connected = False
        self.scheduler_found = False
        self.broker_connections = -1
        Log.info("Communicator initialized")
项目:sdk-samples    作者:cradlepoint    | 项目源码 | 文件源码
def single(topic, payload=None, qos=0, retain=False, hostname="localhost",
           port=1883, client_id="", keepalive=60, will=None, auth=None,
           tls=None, protocol=paho.MQTTv311, transport="tcp"):
    """Publish a single message to a broker, then disconnect cleanly.

    This function creates an MQTT client, connects to a broker and publishes a
    single message. Once the message has been delivered, it disconnects cleanly
    from the broker.

    topic : the only required argument must be the topic string to which the
            payload will be published.

    payload : the payload to be published. If "" or None, a zero length payload
              will be published.

    qos : the qos to use when publishing,  default to 0.

    retain : set the message to be retained (True) or not (False).

    hostname : a string containing the address of the broker to connect to.
               Defaults to localhost.

    port : the port to connect to the broker on. Defaults to 1883.

    client_id : the MQTT client id to use. If "" or None, the Paho library will
                generate a client id automatically.

    keepalive : the keepalive timeout value for the client. Defaults to 60
                seconds.

    will : a dict containing will parameters for the client: will = {'topic':
           "<topic>", 'payload':"<payload">, 'qos':<qos>, 'retain':<retain>}.
           Topic is required, all other parameters are optional and will
           default to None, 0 and False respectively.
           Defaults to None, which indicates no will should be used.

    auth : a dict containing authentication parameters for the client:
           auth = {'username':"<username>", 'password':"<password>"}
           Username is required, password is optional and will default to None
           if not provided.
           Defaults to None, which indicates no authentication is to be used.

    tls : a dict containing TLS configuration parameters for the client:
          dict = {'ca_certs':"<ca_certs>", 'certfile':"<certfile>",
          'keyfile':"<keyfile>", 'tls_version':"<tls_version>",
          'ciphers':"<ciphers">}
          ca_certs is required, all other parameters are optional and will
          default to None if not provided, which results in the client using
          the default behaviour - see the paho.mqtt.client documentation.
          Defaults to None, which indicates that TLS should not be used.
          Alternatively, tls input can be an SSLContext object, which will be
          processed using the tls_set_context method.

    transport : set to "tcp" to use the default setting of transport which is
          raw TCP. Set to "websockets" to use WebSockets as the transport.
    """

    msg = {'topic':topic, 'payload':payload, 'qos':qos, 'retain':retain}

    multiple([msg], hostname, port, client_id, keepalive, will, auth, tls,
             protocol, transport)
项目:homeassistant    作者:NAStools    | 项目源码 | 文件源码
def __init__(self, hass, broker, port, client_id, keepalive, username,
                 password, certificate, client_key, client_cert,
                 tls_insecure, protocol, will_message, birth_message):
        """Initialize Home Assistant MQTT client."""
        import paho.mqtt.client as mqtt

        self.hass = hass
        self.topics = {}
        self.progress = {}
        self.birth_message = birth_message

        if protocol == PROTOCOL_31:
            proto = mqtt.MQTTv31
        else:
            proto = mqtt.MQTTv311

        if client_id is None:
            self._mqttc = mqtt.Client(protocol=proto)
        else:
            self._mqttc = mqtt.Client(client_id, protocol=proto)

        if username is not None:
            self._mqttc.username_pw_set(username, password)

        if certificate is not None:
            self._mqttc.tls_set(certificate, certfile=client_cert,
                                keyfile=client_key)

        if tls_insecure is not None:
            self._mqttc.tls_insecure_set(tls_insecure)

        self._mqttc.on_subscribe = self._mqtt_on_subscribe
        self._mqttc.on_unsubscribe = self._mqtt_on_unsubscribe
        self._mqttc.on_connect = self._mqtt_on_connect
        self._mqttc.on_disconnect = self._mqtt_on_disconnect
        self._mqttc.on_message = self._mqtt_on_message
        if will_message:
            self._mqttc.will_set(will_message.get(ATTR_TOPIC),
                                 will_message.get(ATTR_PAYLOAD),
                                 will_message.get(ATTR_QOS),
                                 will_message.get(ATTR_RETAIN))
        self._mqttc.connect(broker, port, keepalive)