首页 > 编程语言 >python Mqtt 的安装及使用

python Mqtt 的安装及使用

时间:2023-02-24 17:24:42浏览次数:41  
标签:__ mqttc python print Mqtt mosquitto str msg 安装

 


简介&安装
MQTT是一个基于客户端-服务器的消息发布/订阅传输协议。MQTT协议是轻量、简单、开放和易于实现的
,这些特点使它适用范围非常广泛.可以以极少的代码和有限的带宽,为连接远程设备提供实时可靠的消
息服务。作为一种低开销、低带宽占用的即时通讯协议,使其在物联网、小型设备、移动应用等方面有
较广泛的应用。

MQTT 提供两个核心功能:

三种级别的消息发布服务质量
基于订阅/发布的消息转发服务。
有三种消息发布服务质量:

"至多一次",消息发布完全依赖底层TCP/IP网络。会发生消息丢失或重复。这一级别可用于如下情况,
环境传感器数据,丢失一次读记录无所谓,因为不久后还会有第二次发送。这一种方式主要普通APP的推
送,倘若你的智能设备在消息推送时未联网,推送过去没收到,再次联网也就收不到了。

"至少一次",确保消息到达,但消息重复可能会发生。

"只有一次",确保消息到达一次。在一些要求比较严格的计费系统中,可以使用此级别。在计费系统中
,消息重复或丢失会导致不正确的结果。这种最高质量的消息发布服务还可以用于即时通讯类的APP的推
送,确保用户收到且只会收到一次。

安装方式见官网介绍:http://mosquitto.org/download/
Mac 安装方式非常简单
brew install mosquitto

新梦想技术分享

安装完成,可以见它的配置文件为地址在 /usr/local/etc/mosquitto/mosquitto.conf 下

启动MQTT服务命令为
mosquitto -c /usr/local/etc/mosquitto/mosquitto.conf 即可开启服务
如果提示 mosquitto 命令未找到,就添加一下环境变量

MOSQUITTO_HOME=/usr/local/Cellar/mosquitto/1.6.9/sbin
export MOSQUITTO_HOME
export PATH=$PATH:$MOSQUITTO_HOME
启动服务 brew services start mosquitto
停止服务 brew services stop mosquitto

发送消息命令
mosquitto_pub -h 127.0.0.1 -p 1883 -t "mytopic" -m "222"
表示向 主题为 mytopic 发送一条 内容为 222的消息

添加订阅主题命令
mosquitto_sub -h 127.0.0.1 -p 1883 -t "mytopic" -v
表示向 mqtt中添加 一个主题为 mytopic 的监听

新梦想技术分享
以上是命令的方式测试及验证相关功能,那么在python中代码如何调用呢

Python 使用MQTT
MqttClient.py

 

import datetime
import paho.mqtt.client as mqtt
# 服务器地址
strBroker = "localhost"
# 通信端口
port = 1883
# 用户名
username = 'username'
# 密码
password = 'password'
# 订阅主题名
topic = 'topic'

def on_connect(mqttc, obj, rc):
print("OnConnetc, rc: " + str(rc))

def on_publish(mqttc, obj, mid):
print("OnPublish, mid: " + str(mid))

def on_subscribe(mqttc, obj, mid, granted_qos):
print("Subscribed: " + str(mid) + " " + str(granted_qos))

def on_log(mqttc, obj, level, string):
print("Log:" + string)

def on_message(mqttc, obj, msg):
curtime = datetime.datetime.now()
strcurtime = curtime.strftime("%Y-%m-%d %H:%M:%S")
print(strcurtime + ": " + msg.topic + " " + str(msg.qos) + " " + str(msg.payload))
on_exec(str(msg.payload))

def on_exec(strcmd):
print
"Exec:", strcmd
# =====================================================
if __name__ == '__main__':
mqttc = mqtt.Client("test")
mqttc.on_message = on_message
mqttc.on_connect = on_connect
mqttc.on_publish = on_publish
mqttc.on_subscribe = on_subscribe
mqttc.on_log = on_log

# 设置账号密码
# mqttc.username_pw_set(username, password=password)

mqttc.connect(strBroker, port, 60)
mqttc.subscribe(topic, 0)
mqttc.loop_forever()


MqttServer.py

 

import sys
import datetime
import socket, sys
import paho.mqtt.publish as publish

'''
发送消息
'''
def transmitMQTT(strMsg):
strMqttBroker = "localhost"
strMqttTopic = "topic"
publish.single(strMqttTopic, strMsg, hostname=strMqttBroker)

if __name__ == '__main__':
msg = "Hello,MQTT 2020!"
transmitMQTT("msg")
print("Send msg = [", msg, "] ok.")


ps :如果Homebrew 更新太慢,可以替换Homebrew 源,具体参见这个文章

标签:__,mqttc,python,print,Mqtt,mosquitto,str,msg,安装
From: https://www.cnblogs.com/xmxit/p/17152246.html

相关文章

  • VS Code下载安装使用教程
    VSCode下载安装使用教程@目录VSCode下载安装使用教程一、下载二、安装三、使用教程3.1VSCode中的第一个页面HelloWorld.html3.2VSCode插件安装(黑马程序员)3.2.1安装......
  • RGB2HSV Python
    RGB2HSVPythonfromskimageimportcolorimportmatplotlib.pyplotaspltimportcv2img=cv2.imread('low-light.jpg')print(img.shape)plt.figure(num='astrona......
  • python 冰墩墩
     1.python,turtles以下为代码:importturtle#设置一个画布turtle.setup(800,600)turtle.speed(10)#画左手和手内turtle.penup()turtle.goto(177,112)turt......
  • redis_概述与redis_下载&安装
    redis_概述: redis是一款高性能的NOSQL系列的非关系型数据库 什么是NOSQLNoSQL(NoSQL=NotOnlySQL),意即“不仅仅是SQL”,是一项全新的数据库理念,泛指非关系......
  • Python学习笔记--网络通信--socket
    1.socket里面的,AF_INET和AF_UNIX有什么区别?AF_INET用于真实的两台机器进行通信。AF_UNIX用于本地自己跟自己通信。参考资料:http://www.langdebuqing.com/  2.soc......
  • Centos 7 安装Netbox
    #####installpostgresql##############sudoyuminstall-yhttps://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.r......
  • python基于word模板批量生成word文件
    1、需要用到docxtpl库,用于操作word模板安装:pipinsatlldocxtpl处理之前的word模板 处理后的word 下面直接上代码揭开它的神秘面纱:第一步,读取excel中的内容imp......
  • Linux中安装mysql
    检查当前系统是否安装过mysql[root@master~]#rpm-qa|grepmariadbmariadb-libs-5.5.68-1.el7.x86_64#已经存在存在则先卸载[root@master~]#rpm-e--nodepsm......
  • docker之安装tomcat
    国内Image仓库地址:https://hub.docker.com/search?q=tomcat安装tomcatdockerpulltomcat查看Imagedockerimages运行tomcatdockerrun-d--namemy-tomcat-p9090......
  • 如何利用Python分析数据--绘图
    一、前言1)本文需要了解Python相关的基础知识。2))本文参考快速入门指南—Matplotlib3.7.0文档,实现利用Python完成日常的图表绘制。二、基础知识1)本文的......