使用python发送、订阅mqtt消息

开发给的接口文档,接口请求方式为MQTT消息

接口文档
在这里插入图片描述
发送MQTT消息的两种方式:html

1、使用Eclipse Paho MQTT Utility

在这里插入图片描述
选项中,填写帐号密码
在这里插入图片描述
订阅成功的话,发布成功,就会接收到返回的消息。python

缺点:

1,填写的内容不能保存,关闭窗口以后就没有了
2,参数中有时间戳,须要当前时间,发布时,要手动修改时间,不方便。web

2、使用Python发送、订阅消息

须要用到的包为paho-mqtt
pip install paho-mqttjson

# -*- coding: utf-8 -*-
# 如下代码在2019年2月28日 python3.6环境下运行经过
import paho.mqtt.client as mqtt
import json
import time

HOST = "10.8.9.21"
PORT = 1883
client_id = "1083421xxxxx"                       # 没有就不写,此处部份内容用xxx代替原内容,下同

def on_connect(client, userdata, flags, rc):
    print("Connected with result code "+str(rc))
    client.subscribe("data/receive")         # 订阅消息


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


def on_subscribe(client, userdata, mid, granted_qos):
    print("On Subscribed: qos = %d" % granted_qos)


def on_disconnect(client, userdata, rc):
    if rc != 0:
        print("Unexpected disconnection %s" % rc)

data = {
    "type":2,
    "timestamp": time.time(),
    "messageId":"9fcda359-89f5-4933-xxxx",
    "command":"xx/recommend",
    "data":{
        "openId":"xxxx",
        "appId":xxxx,
        "recommendType":"temRecommend"
    }
}
param = json.dumps(data)
client = mqtt.Client(client_id)
client.username_pw_set("xxxxxx", "xxxxxx")
client.on_connect = on_connect
client.on_message = on_message
client.on_subscribe = on_subscribe
client.on_disconnect = on_disconnect
client.connect(HOST, PORT, 60)
client.publish("data/send", payload=param, qos=0)     # 发送消息
client.loop_forever()

运行结果:
在这里插入图片描述
Connected with result code 0 , 0表明链接成功app

推荐阅读:
有MQTT函数详细介绍, http://shaocheng.li/post/blog/2017-05-23
MQTT概念相关知识介绍,https://www.ibm.com/developerworks/cn/iot/iot-mqtt-why-good-for-iot/index.htmlsvg