1.安装paho-mqtt

使用Python Package Index (PyPi)

pip install paho-mqtt

使用virtualenv

virtualenv paho-mqtt
source paho-mqtt/bin/activate
pip install paho-mqtt

或者编译源代码

git clone https://github.com/eclipse/paho.mqtt.python

使用源码安装

cd paho.mqtt.python
python setup.py install

2. Demo

发布数据

# import paho.mqtt.client as mqtt
import paho.mqtt.publish as publish
import time HOST = "127.0.0.1"
PORT = 61613
def on_connect(client, userdata, flags, rc):
print("Connected with result code "+str(rc))
client.subscribe("test") def on_message(client, userdata, msg):
print(msg.topic+" "+msg.payload.decode("utf-8")) if __name__ == '__main__':
client_id = time.strftime('%Y%m%d%H%M%S',time.localtime(time.time()))
# client = mqtt.Client(client_id) # ClientId不能重复,所以使用当前时间
# client.username_pw_set("admin", "123456") # 必须设置,否则会返回「Connected with result code 4」
# client.on_connect = on_connect
# client.on_message = on_message
# client.connect(HOST, PORT, 60)
# client.publish("test", "你好 MQTT", qos=0, retain=False) # 发布消息 publish.single("test", "你好 MQTT", qos = 1,hostname=HOST,port=PORT, client_id=client_id,auth = {'username':"admin", 'password':"123456"})

  

接收数据

import paho.mqtt.client as mqtt
import time HOST = "127.0.0.1"
PORT = 61613 def client_loop():
client_id = time.strftime('%Y%m%d%H%M%S',time.localtime(time.time()))
client = mqtt.Client(client_id) # ClientId不能重复,所以使用当前时间
client.username_pw_set("admin", "123456") # 必须设置,否则会返回「Connected with result code 4」
client.on_connect = on_connect
client.on_message = on_message
client.connect(HOST, PORT, 60)
client.loop_forever() def on_connect(client, userdata, flags, rc):
print("Connected with result code "+str(rc))
client.subscribe("test") def on_message(client, userdata, msg):
print(msg.topic+" "+msg.payload.decode("utf-8")) if __name__ == '__main__':
client_loop()

  client_id是必须的,并且是唯一的。否则可能会出现如下错误:WinError 10054] 远程主机强迫关闭了一个现有的连接。

 

最新文章

  1. div中设置滚动条的问题
  2. jdbc读取数据库,表相关信息(含注释)
  3. source insight使用
  4. Stamps and Envelope Size
  5. (Android)View.getHeight或getWidth为0时的一些解决方案
  6. 【网络流24题】No.9 方格取数问题 (二分图点权最大独立集)
  7. iOS开发中的常用宏定义
  8. 浅谈jquery关于select框的取值和赋值
  9. scanf 和cin 的区别
  10. 阿里P8分享:关于做事方式与做事态度
  11. Dnasp计算LD
  12. java文件上传--基于ajaxFileUpload+struts2
  13. c# 【MVC】WebApi设置返回Json
  14. POJ置换群入门[3/3]
  15. Handle/Looper源码分析;
  16. jupyter运行py文件(py文件和ipynb文件互转)
  17. SpringMVC之搭建框
  18. ajax里post 设置请求头的编码格式
  19. poj 3278 Catch That Cow(bfs+队列)
  20. day2-作业及答案

热门文章

  1. (1)java版本
  2. 康托展开&逆展开算法笔记
  3. [Contest20180328]coin
  4. 【分块】bzoj1593 [Usaco2008 Feb]Hotel 旅馆
  5. 【bzoj1604】【[Usaco2008 Open]Cow Neighborhoods】简单的谈谈曼哈顿距离
  6. cocos2dx 3.13 etc1 ClippingNode Bug 修正
  7. Scala实战高手****第4课:零基础彻底实战Scala控制结构及Spark源码解析
  8. 使用virtualenv为应用提供了隔离的Python运行环境
  9. 对list_entry(ptr, type, member)的理解
  10. 并发的HashMap为什么会引起死循环?(转)