MQTT客户端搭建( Python 与 命令行)

命令行客户端

测试工具:树莓派

下载Mosquitto

更新软件源:sudo apt-get  update

下载g++编译器:sudo apt-get install g++

安装:sudo apt-get install libssl-dev

安装:sudo apt-get install uuid-dev

下载客户端文件:http://mosquitto.org/files/source/mosquitto-1.5.tar.gz

也可以直接网页下载:

解压:sudo tar zxfv mosquitto-1.5.tar.gz

进入解压目录:cd mosquitto-1.5

注意:此处不需要一般源码包安装步骤:./configure..........

编译:make

安装:sudo make install

测试:mosquitto -v

 Python客户端

下载python第三方库:

方法1:

使用命令直接安装

 pip3 install paho-mqtt

方法2:

通过源码安装

下载:https://github.com/eclipse/paho.mqtt.python

打开:cd paho.mqtt.python
安装:python setup.py install

编写实现代码:

运行后会一直等待数据接收

 1 import paho.mqtt.client as mqtt
 2 import time
 3 
 4 HOST = "服务器IP地址-----" #如 192.168.11.23
 5 PORT = 61613#端口号----
 6 
 7 #MQTT程序入口
 8 def client_loop():
 9     client_id = time.strftime('%Y%m%d%H%M%S',time.localtime(time.time()))# ClientId不能重复,所以使用当前时间
10     client = mqtt.Client(client_id) 
11     client.username_pw_set("用户名---", "密码---")
12     client.on_connect = on_connect
13     client.on_message = on_message
14     client.connect(HOST, PORT, 60)
15     client.publish("消息号-----", "MQTT start", qos=0, retain=False) # 发布消息
16     client.loop_forever()
17     
18 #连接
19 def on_connect(client, userdata, flags, rc):
20     print("Connected with result code "+str(rc))
21     client.subscribe("消息号------",0)#订阅,参数为(订阅号,Qos值)
22     
23 #消息接收,此处会一直阻塞主线程
24 def on_message(client, userdata, msg):#打印订阅消息
25     print(msg.topic+" "+msg.payload.decode("utf-8"))
26     
27 #程序主入口
28 if __name__ == '__main__':
29     client_loop()

改进:

实现非阻塞主线程

import threading

#在线程函数中调用MQTT程序入口
def run11(varx):
    client_loop()

#创建线程
t1=threading.Thread(target=run11,args=("var1111",))
t1.start()

运行效果:

云端java自编客户端捕获和推送消息:

 


 参考:

https://blog.csdn.net/itas109/article/details/78873257

https://blog.csdn.net/xukai871105/article/details/39255089

posted @ 2018-09-20 03:32  东小东  阅读(2243)  评论(0编辑  收藏  举报