安装MQTT客户端(mqttfx or mqttx):

sudo dpkg -i mqttfx-1.7.1-64bit.deb
snap install mqttx

SmartOT系统中已经默认安装了一个MQTT服务器,不能再安装了。

如果是一个全新的Ubuntu系统,可以安装一个MQTT服务器作为测试,目前主流的MQTT服务器为EMQX和Mosquitto:

  1. 安装EMQX:

     sudo dpkg -i emqx-ubuntu20.04-4.2.7-x86_64.deb
     sudo emqx start	
     emqx_ctl status
    
  2. 安装Mosquitto

     sudo apt install mosquitto
    

EMQX的网页版DashBoard:

http://127.0.0.1:18083
user: admin 
password: public

安装PythonMQTT库:

sudo pip3 install paho-mqtt

paho发布者(Publish):

import paho.mqtt.client as mqtt

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

def on_message(client, userdata, msg):
    print(msg.topic + " " + str(msg.payload))

client = mqtt.Client()
client.on_connect = on_connect
client.on_message = on_message
client.connect('broker.emqx.io', 1883, 600) # 600为keepalive的时间间隔
client.publish('fifa', payload='amazing', qos=0)

paho订阅者(Subscribe):

import paho.mqtt.client as mqtt

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

def on_message(client, userdata, msg):
    print(msg.topic + " " + str(msg.payload))

client = mqtt.Client()
client.on_connect = on_connect
client.on_message = on_message
client.connect('broker.emqx.io', 1883, 600) # 600为keepalive的时间间隔
client.subscribe('fifa', qos=0)
client.loop_forever() # 保持连接