MQTT paho.mqtt.python

MQTT

首先先了解一下什么是MQTTMQTT,MQTT(Message Queuing Telemetry Transport,消息队列遥测传输协议),是一种基于发布/订阅(publish/subscribe)模式的轻量级协议,该协议构建于TCP/IP协议之上,MQTT最大优点在于,可以以极少的代码和有限的带宽,为连接远程设备提供实时可靠的消息服务。作为一种低开销、低带宽占用的即时通讯协议,使其在物联网、小型设备、移动应用等方面有较广泛的应用。

MQTT是一个基于客户端-服务器的消息发布/订阅传输协议。MQTT协议是轻量、简单、开放和易于实现的,这些特点使它适用范围非常广泛。在很多情况下,包括受限的环境中,如:机器与机器(M2M)通信和物联网(IoT)。其在,通过卫星链路通信传感器、偶尔拨号的医疗设备、智能家居、及一些小型化设备中已广泛使用。

使用paho.mqtt来订阅发布消息

发布消息

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


def on_message(client, userdata, msg):
    print("topic:" + msg.topic + " " + str(msg.payload.decode('utf-8')))

def on_publish(client, userdata, mid):
    print("message" + str(mid) + ' success')
   
def pub():
    while True:
        data = {
            "temperature": random.randint(0, 99),
            "time": datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S"),
            "liquid level": random.randint(0, 99),
            "air humidity": random.randint(0, 99),
        }
        param = json.dumps(data)
        client.publish('Solar heater', payload=param)


if __name__ == '__main__':
    client = mqtt.Client(client_id="client3")
   #回调函数
    client.on_connect = on_connect
    client.on_message = on_message
    client.on_publish = on_publish
	#连接,1883固定端口, 60为keepalive
    client.connect("192.168.43.189", 1883, 60)
   #这是网络循环的阻塞形式,直到客户端调用disconnect()时才会返回。它会自动处理重新连接。
    client.loop_forever()

订阅消息

import paho.mqtt.client as mqtt


def on_connect(client, userdata, flags, rc):
    print("Connected with result code " + str(rc))
   #连接主题
    client.subscribe('Solar heater')

def on_message(client, userdata, msg):
    print("topic:" + msg.topic + " " + str(msg.payload.decode('utf-8')))

client = mqtt.Client(client_id="client1")
client.on_connect = on_connect
client.on_message = on_message
client.connect("192.168.43.189", 1883, 60)
client.loop_forever()

参考资料:

  • (https://www.jianshu.com/p/b76dbc675141)
  • (https://blog.csdn.net/weixin_41656968/article/details/80848542#11loopforever)

你可能感兴趣的:(MQTT paho.mqtt.python)