位置: IT常识 - 正文

EMQX(MQTT)----基本用法以及使用Python程序进行模拟流程

编辑:rootadmin
EMQX(MQTT)----基本用法以及使用Python程序进行模拟流程

推荐整理分享EMQX(MQTT)----基本用法以及使用Python程序进行模拟流程,希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:,内容如对您有帮助,希望把文章链接给更多的朋友!

        EMQX是大规模分布式物联网MQTT消息服务器,除了发送接送的流量不能太大(不能用于生产!),在学习MQTT方面上有很大的优势的!

        在使用该协议时,主要需要弄懂的一个知识点就是“发布者”和“订阅者”的关系,在最简单的模型中,一般会含有以上两个角色,发布者不需要订阅任何id,只管设置自己的“话题”(Topic),当设置好话题后,订阅者则需要去订阅这个话题,便可以与发布者进行数据交互,具体框架如下所示:

 我可以先来创建一个MQTT Client!

首先需要到网上下载MQTTBox,然后打开软件,点击创建Client,然后再访问官网,获取公共接口:

mqtt官方网站点击此处即可访问官网!

然后你会看到这个:

 这个大家都是公用的,只需赋值Broker即可:

继续打开MQTTBox进行填写,只需要注意以下三点即可,名字(ClientName)是随意的。

 创建之后就有以下界面了,

 其中左边为发布者,右边为订阅者,发布者只管设置话题(图中我设置为了ObjectA),然后右边就订阅该话题即可(填入相同的话题名字),然后就可以点击Subscribe按钮进行订阅。然后回到发布者的左边界面,再Payload中可以填入想要发送的内容,最后再点击Publish按钮便可以将消息发送,成功的效果图如下:

 右边会有左边发布者传来的数据。

主要流程就是:发布者发布消息,然后订阅者订阅发布者的话题,双方即可实现通讯。

依据这个原理,我们可以通过python来实现这一过程,但是首先需要准备两个东西!

1.需要下载emqx的zip包zip包下载点击即可

注意:有些电脑可能下载5.0.x版本会启动失败,建议直接下载4.4.x版本。

EMQX(MQTT)----基本用法以及使用Python程序进行模拟流程

2.python需要安装依赖库,在cmd中输入:

pip install paho-mqtt

网络也有一些镜像,可以用镜像下载更快!

准备完以上工具便可开始:

        先要在本地启动emqx的服务:只需要将上面下载的zip包解压之后,通过cmd进入该解压后的路径,然后进入到里面的/bin路径下,然后输入指令:

emqx start

         当完成流程不想再操作后,可以使用以下命令关闭该服务:

emqx stop

 这样即成功!

可以打开浏览器进行查看:在输入栏中输入:127.0.0.1:18083,后输入账号密码,默认为:{账号:admin,密码:public}(可能会让你更改密码,根据提示更改即可)而后会进入以下界面:

 到这里就可以开始我们的python编码了,以下为python的完整编码:

分两个板块:

1.发布者:

import randomimport timeimport paho.mqtt.client as mqtt_clienttopic = "/python/mqtt"//创建话题,可以自定义client_id = f'python-mqtt-{random.randint(0, 100)}'//获取随机id(可以自行选择)def publish(client)://发布的核心方法 msg_count = 0 while True: time.sleep(1) msg = f"messages: {msg_count}"//发送的消息(message) result = client.publish(topic, msg)//调用库中方法public()进行发布,会返回一个列表 status = result[0]//列表的第一个元素返回的是请求是否成功,然后作判断 if status == 0: print(f"Send `{msg}` to topic `{topic}`") else: print(f"Failed to send message to topic {topic}") msg_count += 1def connect_mqtt(): def on_connect(client, userdata, flags, rc): if rc == 0: print("Connected to MQTT Broker!") else: print("Failed to connect, return code %d\n", rc) client = mqtt_client.Client(client_id) client.on_connect = on_connect client.connect(host='127.0.0.1', port=1883)//此处不需要更改,都为默认 return clientdef run(): client = connect_mqtt() client.loop_start() publish(client)if __name__ == '__main__': run()

2.订阅者

import randomfrom paho.mqtt import client as mqtt_clienttopic = "/python/mqtt"client_id = f'python-mqtt-{random.randint(0, 100)}'def connect_mqtt() -> mqtt_client: def on_connect(client, userdata, flags, rc): if rc == 0: print("Connected to MQTT Broker!") else: print("Failed to connect, return code %d\n", rc) client = mqtt_client.Client(client_id) client.on_connect = on_connect client.connect(host='127.0.0.1', port=1883) return clientdef subscribe(client: mqtt_client): def on_message(client, userdata, msg): print(f"Received `{msg.payload.decode()}` from `{msg.topic}` topic") client.subscribe(topic) client.on_message = on_messagedef run(): client = connect_mqtt()//创建mqtt对象 subscribe(client) client.loop_forever()//表示永久等待发布者发布消息if __name__ == '__main__': run()

然后依次运行以上模块,可以看到以下结果:

发布者: 

订阅者:

 

 还可以通过127.0.0.1:18083来看到两个接入成员:

         以上便是对emqx的一些基本操作的演示和介绍,当然通过emqx还可以实现更多方式的互联,需要我们去探索和实现。还可以是不同地设备,如树莓派,esp系列,让单片机开发的成本可以减少服务器的支出,对学习起到帮助作用。

本文链接地址:https://www.jiuchutong.com/zhishi/290889.html 转载请保留说明!

上一篇:微信小程序实现快速精确定位(微信小程序实现灯泡开关效果)

下一篇:努沙杜瓦海岸与防波堤,印度尼西亚巴厘岛 (© Dkart/Getty Images)(努沙杜瓦酒店)

  • 不能跨年
  • 增值税发票查询网络异常
  • 小企业会计准则是什么意思
  • 商誉 会计
  • 投标保证金保险怎么买
  • 上期金额和本期金额是什么意思
  • 没有支付运费会怎样
  • 增值税纳税申报表附列资料(三)
  • 增值税专用发票使用规定 最新
  • 私营企业实行固定税率
  • 过路费普通发票可以抵税吗
  • 海关进口增值税如何入账
  • 支付员工出差住宿费
  • 认证抵扣完的发票怎么处理
  • 印花税的基数及标准是多少?
  • 德邦物流增值税发票怎么开
  • 电梯按几年摊销
  • 其他应收款怎么分析
  • 小规模纳税人增值税优惠政策2023
  • 保险公司买保险和银行买保险有什么区别
  • 各类预算的内容及其相互关系
  • 根据完工产品编制记账凭证
  • 安保费差额纳税是什么意思
  • 牛肉炖萝卜的做法高压锅
  • php怎么定义全局变量
  • 即征即退,先征后退,先征后返的区别?
  • win7系统更改属性内存信息的方法有哪些
  • uniapp获取window对象
  • 火遍全网的超燃神曲旋律震撼人心,听完热血沸腾!
  • 微信小程序开发平台
  • php过滤html
  • python语言接收信息的内置函数
  • 安装和配置eclipse集成开发环境
  • 公司账户转私账违法吗
  • 厂区道路不应该使用哪种材料
  • 咨询服务费怎么交税
  • 金蝶软件账套备份在哪里
  • 非贸备案什么意思
  • 住宿费记入管理费用还是营业费
  • 织梦如何采集文章
  • python中的比较
  • 企业汇兑收益所得税税率
  • 期间费用指哪些费用
  • 税控盘每年的服务费可以全额抵扣吗
  • 异地交税怎么交
  • 小型公司怎么做账
  • 残疾人保障金汇算清缴的处理
  • 农民专业合作社法
  • 单位补扣社保算漏交吗
  • 小规模纳税人减按1%怎么计算
  • 银行收到客户货款会计分录
  • 进项抵扣后的附加税
  • 社保税款所属期申报错了要紧吗?
  • 小额零星支出是什么意思
  • 为什么到期一次还本付息要用债权投资利息调整
  • 实收资本是什么公司
  • mysql57安装过程怎样选安装目录
  • win8怎么打开光驱
  • window10右击
  • linux系统 虚拟机
  • win7删除通知区域图标
  • winxp文件夹选项
  • ghost过的硬盘能恢复吗
  • 如何避免系统性风险
  • 微软状态
  • win10专业版系统安装教程
  • win10怎么添加游戏手柄
  • Linux+Apache+PHP+MySQL+Zend Optimizer+PHPMyAdmin
  • systemd init.d
  • win10系统激活后怎么关闭
  • 让一切停留在最美好的时光
  • jQuery Ajax 实现在html页面实时显示用户登录状态
  • javascript获取当前文件夹文件数量
  • Python Requests 基础入门
  • 施工费税费
  • 江苏国税电子税局
  • 保定市国税局车管所所长
  • 车辆购置税如何入账
  • 如何查询医院是否有怀孕建档名额
  • 税务系统领导干部监督管理办法
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设