位置: 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)(努沙杜瓦酒店)

  • 企业所得税的征税对象包括
  • 员工离职社保未及时减员怎么处理
  • 应收款为负数怎么做分录
  • 损益平准基金
  • 政府补贴营业外收入所得税汇算清缴需要调增吗
  • 第二季度纳税申报
  • 管理部门社保入哪个科目
  • 不动产租赁发票怎么开
  • 监督审核费用会计入账
  • 公司一直没有做内账违法吗
  • 广告服务怎么做分录
  • 事业单位利息收入
  • 企业为什么要签订集体合同
  • 旅游合同签订
  • 研发支出与开发成本的区别
  • 所得税预缴资产怎么算
  • 如何查询发票是否验旧
  • 建设单位对工程施工的评价意见
  • 个人独资企业生活费用扣除
  • 无偿取得股权账务处理
  • 总公司与分公司的账务处理
  • 在windows 7中
  • 特殊工种人身安全保险费可以扣除吗
  • 跟踪路由如何实现
  • 增值税已认证抵扣
  • 公司没有营业额零报税的后果
  • php保存数据
  • 开发票金额少于付款金额差额怎么入账?
  • Vue3 + Vite + TypeScript + dataV 打造可视化大屏
  • php如何读取文件内容
  • python程序怎么看
  • PHP:imagecreatefromwebp()的用法_GD库图像处理函数
  • linux编译安装php扩展命令
  • 设备维修的会计分录怎么做
  • 税务机关代小规模纳税人开发票
  • js面试2021
  • Yii2针对游客、用户防范规则和限制的解决方法分析
  • 应收票据有利息收入吗
  • 小规模简易征收最新政策2020
  • 清包工方式建筑服务
  • 合伙人退伙后对退伙后的债务承担责任吗
  • 进口关税增值税在哪里打印
  • 疫情期间提涨薪合适吗
  • 未达到起征点的增值税会计处理
  • 电子发票是否作废怎么查
  • 无形资产属于货物吗为什么
  • 计提坏账准备的金额怎么算的
  • 印花税漏报,税务局怎么罚款
  • 销售免税农产品的会计分录
  • 厂房装修费用账务处理
  • 跨年多计提的工资如何处理
  • 用友关账怎么取消
  • 对公账户 取款
  • 不属于投资性房地产项目有自用房地产作为存货的
  • 电脑系统2003
  • redhat操作系统安装步骤
  • fedora使用
  • 小黑马科技
  • xp系统的启动快捷键
  • mac uuid查询
  • win8手提电脑怎么关闭触摸板
  • OpenGL Tutorial: (1) Setting up OpenGL with Visual Studio
  • cocos 2d x
  • nodejs初始化
  • from tkinter import
  • javascript prototype inheritence
  • 安卓核心架构
  • windows常用网络命令的使用
  • bootstrap页头
  • jquery插件是干什么的
  • Zero Clipboard实现浏览器复制到剪贴板的方法(多个复制按钮)
  • python多进程模块
  • 国税周末有值班的吗
  • 契税完税证明怎么补打
  • 北京电子税务局实名认证
  • 湖北省国家税务局历任局长
  • 计提消费税的会计分录讲解
  • 豫事办登录时密码叫重置什么原因
  • 车辆购置税退税申请表
  • 国家税务总局网站官网贵州省税务局
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设