位置: IT常识 - 正文

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

发布时间:2024-01-10
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)(努沙杜瓦酒店)

  • 如何给文件夹设置密码(如何给文件夹设置密码)(如何给文件夹设置一个密码)

    如何给文件夹设置密码(如何给文件夹设置密码)(如何给文件夹设置一个密码)

  • 怎么查看随申码(怎么查看随申码变红的原因)

    怎么查看随申码(怎么查看随申码变红的原因)

  • 天猫超市半日达在哪里进入(天猫超市半日达入口)

    天猫超市半日达在哪里进入(天猫超市半日达入口)

  • 高德地图创始人是谁(高德地图创始人 肖军)

    高德地图创始人是谁(高德地图创始人 肖军)

  • 苹果8plus有人脸识别吗(苹果13pro面容识别不了)

    苹果8plus有人脸识别吗(苹果13pro面容识别不了)

  • 电脑不分盘有没有影响(电脑不分盘没事吧)

    电脑不分盘有没有影响(电脑不分盘没事吧)

  • ar vr mr分别代表什么(ar.vr.mr是什么意思)

    ar vr mr分别代表什么(ar.vr.mr是什么意思)

  • 小红书无法修改头像(小红书无法修改封面)

    小红书无法修改头像(小红书无法修改封面)

  • 苹果电脑截图按哪三个键(苹果电脑截图按键盘什么键)

    苹果电脑截图按哪三个键(苹果电脑截图按键盘什么键)

  • 抖音直播点赞有啥用(抖音直播点赞有音浪吗)

    抖音直播点赞有啥用(抖音直播点赞有音浪吗)

  • 快手评论图片怎么看不见(快手评论图片怎么发)

    快手评论图片怎么看不见(快手评论图片怎么发)

  • 韩剧tv有电脑版吗(韩剧tv安卓版下载)

    韩剧tv有电脑版吗(韩剧tv安卓版下载)

  • cad2007安装过早结束(cad2007安装过早结束win10)

    cad2007安装过早结束(cad2007安装过早结束win10)

  • 电脑老是自己安装软件怎么办(电脑老是自己安装一些软件怎么办)

    电脑老是自己安装软件怎么办(电脑老是自己安装一些软件怎么办)

  • 小米手表什么时候支持ios(小米手表什么时候出的)

    小米手表什么时候支持ios(小米手表什么时候出的)

  • 显示屏是内屏吗(屏幕显示是内屏还是外屏)

    显示屏是内屏吗(屏幕显示是内屏还是外屏)

  • 存储容量1GB等于(存储容量1GB等于2的几次方)

    存储容量1GB等于(存储容量1GB等于2的几次方)

  • 怎么把微信背景弄成黑色(怎么把微信背景设置成照片)

    怎么把微信背景弄成黑色(怎么把微信背景设置成照片)

  • 戴尔笔记本摄像头怎么打开(戴尔笔记本摄像头怎么开启不了)

    戴尔笔记本摄像头怎么打开(戴尔笔记本摄像头怎么开启不了)

  • 苹果手机左上角有个麦克风(苹果手机左上角有个汽车)

    苹果手机左上角有个麦克风(苹果手机左上角有个汽车)

  • cc9可以装内存卡吗(cc9pro可以插内存卡吗)

    cc9可以装内存卡吗(cc9pro可以插内存卡吗)

  • 全民k歌怎么取消自动续费(全民k歌怎么取消关注的人)

    全民k歌怎么取消自动续费(全民k歌怎么取消关注的人)

  • 百度网盘如何提速(百度网盘如何提速下载文件)

    百度网盘如何提速(百度网盘如何提速下载文件)

  • 将目标程序转换为可执行文件的程序称为(将目标程序转换为可执行文件的程序)

    将目标程序转换为可执行文件的程序称为(将目标程序转换为可执行文件的程序)

  • 微博照片水印设置苹果教程(微博 照片水印)

    微博照片水印设置苹果教程(微博 照片水印)

  • 新项目决定用 JDK 17了(新项目分哪几个阶段)

    新项目决定用 JDK 17了(新项目分哪几个阶段)

  • 啥子是增值税
  • 积分兑换商品怎么入账
  • 计提个人所得税计入什么科目
  • 社保工伤保险可以交两家公司吗
  • 财务报表怎么重新做
  • 结转抵扣
  • 机打发票报销有效期
  • 轿车被盗
  • 代开的专用发票如何开具红字发票
  • 供货方代垫运费计入原材料
  • 土地证是商业用地
  • 公司冲账发票做账流程
  • 农民专业合作社普通发票抵扣
  • 税控服务费抵扣增值税
  • 建筑业如何核算费用
  • 承包方给发包方付费
  • 未办理房屋预售许可证怎么处理
  • 应对税务检查工作总结
  • 社保滞纳金能否超过本金
  • 购买方申请的红字信息表需要邮寄给销售方吗
  • 政府收购企业资产规定
  • 更改onedrive文件夹位置
  • 未到期的商业票据是什么
  • win10平板模式不好用
  • windows10更新会丢失数据吗
  • 没有组策略权限
  • 未取得发票入账违反什么规定
  • 冈山平原
  • 境外汇款预处理是什么意思
  • vscode前端必备扩展
  • 简述php操作mysql数据库的基本步骤
  • 二手车交易发票怎么收费
  • 政府补贴什么时候开始的
  • 公司给员工交社保是怎么交的
  • 赔偿款收据样本
  • 银行账户管理的直接责任人是共享中心核算会计
  • mongodb数据库教程
  • 开房租发票交的税因优惠政策退税如何账务处理?
  • 一般纳税人金税盘怎么清卡
  • 购进材料款项未付用什么凭证
  • 用友财务软件的核心模块是什么
  • 社保补缴收滞纳金吗
  • 主营业务收入计入借方还是贷方
  • 外币账户记账方法
  • 什么情况下增值税发票不能抵扣
  • 电子口岸登录显示证书错误
  • 会计账本怎么记账
  • 低值易耗品与固废的区别
  • 赠送设备如何做账务处理
  • 公账钱怎么取出
  • 新公司初始建账
  • sql server中通过查询分析器实现数据库的备份与恢复方法分享
  • sql语句的高级用法
  • win7系统安全在哪
  • 在wind
  • linux系统汉化教程
  • 在windows七中
  • win2玩魔兽世界
  • win7系统桌面图标变大了怎样恢复
  • win7系统如何关闭开机自动启动软件
  • ppap是什么文件
  • win8系统怎么安装软件
  • windows8介绍
  • bootstrap媒体查询写法
  • 安卓游戏报告
  • div css table
  • cocos2d教程
  • nodejs与springboot结合
  • python查看文件类型
  • nodejs的http
  • js给图片加水印
  • 浅谈编码,解码的意义
  • 深圳国税电子税务局
  • 税控盘时间不对有影响吗
  • 依法纳税的看法
  • 20年灵活就业人员社保新标准
  • 大米包装有二道封口线正常吗
  • 珠宝消费税怎么计算出来的
  • 增值税专用发票增额需要什么资料
  • 契税补贴网上申请
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号