Comunicación 5-python library-paho mqtt

Se puede decir que mqtt muestra que Internet de las cosas es un protocolo muy utilizado, y es ligero, simple, abierto y fácil de implementar estas características. Paho también implementó la versión python de mqtt.

1. conectar

Conéctese y llame a la interfaz de conexión, luego llame a loop_forever y comience a correr

El tercer parámetro de connect es el tiempo de latido de mqtt

on_connectY on_disconnectuna función de devolución de llamada para una conexión y desconexión exitosa,

import paho.mqtt.client as mqtt

mqttClient = mqtt.Client("python_test")


def on_disconnect(client, userdata, rc):
    print("mqtt broker lost "+str(rc))


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


if __name__ == '__main__':
    mqttClient.on_connect = on_connect
    mqttClient.on_disconnect = on_disconnect
    mqttClient.connect("192.168.18.1", 1883, 10)
    mqttClient.loop_forever()
    

2. inicio de sesión SSL

Para agregar un certificado, simplemente agregue los dos siguientes antes de llamar a la función de conexión.

mqttClient.tls_set(ca_certs="cacert.pem", certfile=None, keyfile=None, cert_reqs=mqtt.ssl.CERT_REQUIRED,
                       tls_version=mqtt.ssl.PROTOCOL_TLSv1, ciphers=None)
    mqttClient.tls_insecure_set(True)

3. Contraseña de la cuenta

Para configurar la contraseña de la cuenta, agregue el siguiente elemento antes de llamar a la función de conexión.

mqttClient.username_pw_set("python", passwd)

4.Configuración del tema WILL

Configure el tema WILL, antes de llamar a la función de conexión, use la interfaz will_set para configurar, agregue el tema will y la carga útil del tema will

will_payload = {
    "ver":  "v1",
    "module": "offline",
    "api":  "disconnect",
    "param":  [{
        "k": "mac",
        "v": "DC4BDD1DFA48"
    }, {
        "k": "protypeid",
        "v": "PYTHON"
    }]
}
    
mqttClient.will_set("local/offline", payload=json.dumps(will_payload), qos=CLINET_TOPIC_QOS)

5. Suscríbete

La suscripción del tema utiliza la interfaz de suscripción, que generalmente se configura en la función de devolución de llamada on_connect

Después de suscribirse al tema, nuestro propósito es recibir los datos suscritos, por lo que debemos configurar la función de devolución de llamada on_message para recibir datos
, siempre que haya datos enviados a través de on_message.

#!/usr/bin/python3
# -*- coding:utf-8 -*-
# Author: ye.lin
# Time: 2020/02/24
# Describe:

import paho.mqtt.client as mqtt

mqttClient = mqtt.Client("python_test")

def on_disconnect(client, userdata, rc):
    print("mqtt broker lost "+str(rc))


def on_connect(client, userdata, flags, rc):
    print("Connected with result code " + str(rc))
    mqttClient.subscribe(local/broadcast, qos=1)


def on_message_come(lient, userdata, msg):
    print(msg.topic + " " + ":" + str(msg.payload))


if __name__ == '__main__':
    mqttClient.on_connect = on_connect
    mqttClient.on_disconnect = on_disconnect
    mqttClient.on_message = on_message_come

    mqttClient.tls_set(ca_certs="zgateway_cacert.pem", certfile=None, keyfile=None, cert_reqs=mqtt.ssl.CERT_REQUIRED,
                       tls_version=mqtt.ssl.PROTOCOL_TLSv1, ciphers=None)
    mqttClient.tls_insecure_set(True)

    mqttClient.connect("192.168.18.1", 6885, 10)
    mqttClient.loop_forever()

6. Lanzamiento

Publique usando la interfaz de publicación, de la siguiente manera

    info_payload = {
        "msg":      "test"
    }
    mqttClient.publish("local/notify", payload=json.dumps(info_payload), qos=CLINET_TOPIC_QOS)

106 artículos originales publicados · 76 elogiados · 130,000 visitas +

Supongo que te gusta

Origin blog.csdn.net/Creator_Ly/article/details/104710192
Recomendado
Clasificación