tag 标签: MQTT代理

相关博文
  • 热度 3
    2023-10-19 15:24
    1043 次阅读|
    0 个评论
    一、 应用设备 OT端设备:步进电机,MODBUS TCP远程I/O模块,PLC设备 边缘侧设备:宏集工业树莓派; IT端设备:PC、安卓手机; IT端软件:宏集HiveMQ MQTT通信平台 二、原理 宏集工业树莓派通过MODBUS协议分别采集步进电机、MODBUS TCP I/O模块、PLC设备数据,并在工业树莓派完成一些简单的数据处理。宏集HiveMQ将PC端配置为MQTT Broker;工业树莓派可通过MQTT协议将数据传输到PC端;在手机端,操作人员可通过自行编写的APP程序订阅PC端的数据主题。 三、实际测试 1.工业树莓派源码 1. importthreading 2. importtime 3. fromdoctestimportOutputChecker 4. fromosimportP_PID 5. fromtimeimportsleep 6. fromthreadingimportThread 7. fromtkinterimportW 8. frommyCtrlLibimport* 9. importsys 10. importserial 11. importpaho.mqtt.clientasmqtt 12. importjson 13. 14. 15. defon_connect(client,userdata,flags,rc): 16. print(f "Connectedwithresultcode{rc}" ) 17. 18. client=mqtt.Client() 19. client.on_connect=on_connect 20. client.connect( "192.168.1.168" ,1883,60) 21. 22. # 读取 PLC 数据 23. defread_plc_data(): 24. on_motor() 25. i=0 26. j=0 27. while True: 28. Weight=readFromName( 'Weight' )# 读取 PLC 重量值数据 29. Humidity=readFromName( 'Humidity' )# 读取 PLC 湿度值数据 30. Temperature=readFromName( 'Temperature' )# 读取 PLC 温度值数据 31. 32. # 读取光电开关状态, 0 表示两个光电开关没有被触发; 1 表示光电开关 1 被触发, 2 表示光电开关 2 被触发, 3 表示两个光电开关同时被触发 33. Switch=readFromName( 'Switch_1' ) 34. sleep(1) 35. Back_motor() 36. sleep(1) 37. Advance_motor() 38. 39. # 根据光电开关状态控制电机 40. if Switch==1: 41. i=i+1 42. 43. if 500: 44. j=1 45. else : 46. j=0 47. 48. # 构建 JSON 数据 49. data={ 50. 'Stepping_motor_speed' :300,# 电机转速 51. 'Temperature' :Temperature,# 温度值 52. 'Humidity' :Humidity,# 湿度值 53. 'Obj_weighth' :Weight,# 重量值 54. } 55. 56. json_data=json.dumps(data) 57. client.publish( 'IndustrialProductionLin' ,payload=json_data,qos=0,retain=True) 58. print(i) 59. 60. # 电机启动 61. defon_motor(): 62. writeToName( 'Motor' ,1) 63. pass 64. 65. # 电机正转 66. defAdvance_motor(): 67. writeToName( 'DIR' ,0) 68. pass 69. 70. # 电机反转 71. defBack_motor(): 72. writeToName( 'DIR' ,1) 73. pass 74. 75. # 电机停止 76. defstop_motor(): 77. writeToName( 'Motor' ,0) 78. pass 79. 80. 81. # 创建并启动线程 82. plc_thread=threading.Thread(target=read_plc_data) 83. 84. # 启动线程 85. plc_thread.start() 86. 87. # 主线程等待两个线程结束 88. plc_thread.join() 2. 效果 四、为何选择宏集工业树莓派和宏集HiveMQ方案? 1. 宏集工业树莓派 集成了较多的现场总线协议 ,配合对应的Python库,能通过一些简单配置就能够实现OT端数据的采集,例如该案例使用的MODBUS协议,通过PiCtory配置,就能够编写Python程序, 快速实现OT端的数据对接 ; 2. 宏集工业树莓派目前 最高配置达到了8GB RAM ,性能上等同于一台PC,能够完成一些较为复杂的运算和轻量化机器学习模型。 3. 宏集HiveMQ平台是 基于MQTT通信的物联网解决方案,支持快速配置MQTT Broker ,支持高负载、高并发、高扩展性。在实际应用中,能够确保数据的快速稳定传输,保证不会出现任何一条数据丢失。除此之外的话,它还支持企业级扩展,例如对接Kafka以及企业级信息安全管理等功能。 工业树莓派特价活动 宏集工业树莓派特价活动火爆进行中,欢迎扫描下方小程序码咨询选购~
  • 热度 8
    2023-4-25 09:29
    1008 次阅读|
    0 个评论
    01 协议的基础性变化 MQTT 5是对现有协议规范的重大更新,新版本协议具有以下特征:轻量级、易用性、极强的可扩展性、对移动网络的适用性以及通信参与者的解耦。 02 MQTT仍然是MQTT 如果您熟悉MQTT3.1.1,那么您之前知道的关于MQTT的所有原则和功能同样适用于MQTT v5。不同的是,以往功能的部分细节,如“ Last Will and Testament ”发生了一点变化,某些功能也得到扩展。此外,由 虹科HiveMQ 实现的额外的流行功能,如“ TTL ”或“ 共享订阅 ”被添加到新的规范中。 协议也稍有变化,增加了一个额外的控制包(AUTH)。 但总的来说,MQTT5仍然可以清楚地识别为MQTT。 03 MQTT 头部属性和原因代码 MQTT5最灵活的新功能之一是可以在MQTT头部中添加自定义 键值(key-value) 属性。与HTTP等协议类似,MQTT客户端和代理可以添加任意数量的自定义(或预定义)头部来携带元数据。这种元数据可用于应用程序的特定数据,而预先定义的头部信息被用于实现大多数新的MQTT功能。 许多MQTT数据包现在也包括 原因代码(Reason Codes) 。一个原因代码表明发生了一个预先定义的协议错误。这些原因代码通常是在确认数据包中进行,允许客户端和代理解释错误情况(并有可能解决错误情况)。原因代码有时也被称为 否定确认(Negative Acknowledgements) 。以下MQTT数据包可以携带原因代码: CONNACK PUBACK PUBREC PUBREL PUBCOMP SUBACK UNSUBACK AUTH DISCONNECT 04 CONNACK Return Codes—指示不支持/未实现功能 随着MQTT的普及,许多公司创建并提供了许多MQTT部署。但并非所有的这些实现都是完全兼容MQTT规范的,因为有时候一些功能并没有实现,比如 QoS 2、保留消息 或 持久会话 。值得一提的是,虹科HiveMQ是完全符合MQTT规范的,并且支持所有的功能。 MQTT 5为不完整的MQTT实现提供了一种方法,用来表明该代理不支持特定的功能。客户端的工作是确保不使用不支持的功能。代理的部署是在CONNACK数据包(客户端发送CONNECT数据包后由代理发送)中使用预定义的标头来表明不支持特定的功能。当然,这些标头也可以用来向客户端发送通知,说明它没有使用特定功能的权限。 在MQTT 5中,有以下预定义的头部用于指示未实现的功能(或不允许客户端使用的功能): 这些返回代码对于在异构环境中沟通各个MQTT客户端的权限具有重要作用。这个新功能的缺点是:MQTT客户端需要自己实现对这些代码的解释,并且需要确保应用程序的程序员仅使用代理支持(客户端有权限)的功能。 虹科HiveMQ 100% 支持所有 MQTT 5 功能 ,因此只有在涉及到部署中的权限时,管理员才会使用这些自定义头文件。 下期文章中,我们将继续给大家介绍MQTT5协议中的基础更改中其他新功能的细节描述。 05 关于虹科 HiveMQ 虹科HiveMQ 是一个基于 MQTT 数据传输的通信平台,旨在将数据快速、高效、可靠地传递给连接的物联网设备,HiveMQ 使用 MQTT 协议在设备和企业平台之间进行实时、双向的数据推送。 虹科HiveMQ 的建立是为了解决企业在构建新的物联网应用时面临的一些关键技术挑战,包括: 构建可靠、可扩展的关键业务物联网应用 快速的数据交付,以满足终端用户对响应式物联网产品的期望 通过有效利用硬件、网络和云资源降低运营成本 将物联网数据整合到现有的企业系统中 虹科HiveMQ 提供免费版、专业版、企业版 MQTT Broker 产品,并提供 Kafka、企业安全及 MQTT Broker 桥接三种企业级扩展套件,HiveMQ 还提供高效的 MQTT 客户端及云平台,多方位满足用户需求。
  • 热度 6
    2023-2-23 13:12
    1017 次阅读|
    0 个评论
    一、MQTT 5简介 MQTT协议是当今世界上最流行、接受度最高的物联网协议。 自推出以来,MQTT已经成功地连接了各种规模的部署中的无数受限设备。 流行的用例包括从连接汽车、制造系统、物流和军事到企业聊天应用程序和移动应用程序。MQTT协议的广泛使用催生了进一步发展MQTT规范的高要求。在此背景下,MQTT v5应运而生。 二、MQTT发展历程 在20世纪90年代末,Andy Stanford-Clark(IBM)和Arlen Nipper(Cirrus Link)发明了MQTT,用于通过卫星网络监测石油和天然气管道。他们设计的MQTT协议是开放的、简单的、容易实现的。 MQTT是一个极其轻量级的协议,在保证可靠传递的前提下,最大限度地减少了网络带宽和设备资源需求。 这个设计允许从一台服务器上支持成千上万的小型设备。这些特点使得MQTT 非常适合在处理能力有限、内存容量小、延迟高的受限环境和低带宽网络中使用,如物联网(IoT) 。 三、 MQTT 发展时间线 虽然MQTT协议是在1999年发明的,但它的迅速崛起是在几年之后。开源与开放标准的结合是一个成功的组合,MQTT社区迅速发展。在MQTT 3.1.1作为OASIS和ISO标准发布5年后,MQTT 5也随之而来。2019年3月,MQTT 5作为新批准的OASIS和ISO标准取代了MQTT3.1.1的位置。 四、 MQTT 5 设计目标 负责规范和标准化 MQTT 的 OASIS 技术委员会 面临着复杂的平衡行为: 1. 在不增加开销或降低易用性的情况下,增加长期用户需要的功能; 2. 在不增加不必要的复杂性的情况下提高性能和可扩展性。 技术委员会为MQTT 5规范确定了以下功能目标: 1. 增强可扩展性和大规模系统的功能 2. 改进错误报告 3. 正式确定通用模式,包括能力发现和请求响应 4. 包括用户属性在内的可扩展性机制 5. 性能改进和对小型客户端的支持 基于这些目标和现有 MQTT 部署的需求,技术委员会指定了几个非常有用的新功能。像 虹科HiveMQ MQTT Broker企业版 这样的复杂MQTT代理已经为消息和客户端会话实现了共享订阅和生存时间等功能。随着MQTT 5的发布,这些热门的功能成为官方标准的一部分。 增强可扩展性和大规模系统是新规范的关键目标之一。MQTT 3.1.1证明了MQTT是一个独特的、可扩展、有状态的物联网协议。 虹科HiveMQ MQTT Broker企业版 在云基础设施上为一个MQTT代理集群实现了1000万个MQTT同时连接的基准测试。MQTT 5的设计旨在使MQTT代理更容易扩展到巨大数量的并发连接的客户端。 五、为什么没有MQTT 4? 你可能会好奇,为什么MQTT 3.1.1的后续版本是MQTT 5? 答案很简单,这是因为MQTT协议在CONNECT数据包中定义了一个固定的报头,这个头包含了一个协议版本的单字节值。 如果你检查一下网络上的几个CONNECT数据包,你会注意到一些有趣的事情。MQTT 3.1的协议版本值为 "3",MQTT 3.1.1的协议版本值为 "4"。为了使线上的协议版本值与官方协议版本名称同步,新的MQTT版本在协议名称和值上都使用 "5"。 六、 关于虹科 HiveMQ 虹科HiveMQ 是一个基于 MQTT 数据传输的通信平台,旨在将数据快速、高效、可靠地传递给连接的物联网设备,HiveMQ 使用 MQTT 协议在设备和企业平台之间进行实时、双向的数据推送。 虹科HiveMQ 的建立是为了解决企业在构建新的物联网应用时面临的一些关键技术挑战,包括: 1. 构建可靠、可扩展的关键业务物联网应用 2. 快速的数据交付,以满足终端用户对响应式物联网产品的期望 3. 通过有效利用硬件、网络和云资源降低运营成本 4. 将物联网数据整合到现有的企业系统中
  • 热度 8
    2023-2-7 11:15
    1146 次阅读|
    0 个评论
    前言 本案例主要描述AGV小车和控制系统之间的通信过程,通过VDA 5050标准接口、MQTT通信协议和虹科HiveMQ实现AGV小车和控制系统之间指令和状态信息的通信。 VDA 5050是一种AGV小车与控制系统之间的标准通信接口,旨在简化AGV小车与现有控制系统的连接,以及允许在同一工作环境中并行操作来自不同制造商的AGV小车。 一、应用挑战 MQTT已成为连接设备和AGV小车的物联网标准,而且市场上已经有许多MQTT解决方案。除了支持MQTT协议之外,运行安全稳定的系统还需要其他关键功能。在实现AGV小车与控制系统之间的通信时,面临的挑战主要有以下几点: (1)MQTT解决方案支持所有MQTT 5功能,VDA规范中描述的几个与数据相关的特性可以通过MQTT 5完美描述。 (2)MQTT解决方案支持适合大多数应用场景的安全机制。 (3)为了在不停机的情况下支持系统更改,MQTT解决方案需要高度可用,并支持滚动升级和迁移场景。 (4)MQTT解决方案具有伸缩性,能够支持越来越多的AGV小车。 (5)MQTT Broker必须可扩展,可以通过“即插即用”集成其他系统或添加业务功能。 (6)数据格式由VDA指定,并应在发布前进行验证,以使解决方案更加强大和安全。 (7)在生产环境中,MQTT解决方案能够集中监控和跟踪特定客户端、主题或消息。 二、方案介绍 1.系统框架 下图所示是本案例的系统框架。在外部,HiveMQ Broker作为一个逻辑单元运行,在内部,则作为集群节点运行。HiveMQ Broker 使用用于身份验证和授权的安全扩展、用于JSON有效负载验证的扩展以及用于跟踪和监控的扩展。指标、事件日志以及其他日志信息以 JMX 格式提供,可以集中监控。 作为主要用例,控制系统(CS)客户端向AGV小车发送信息,并消费AGV小车的相关状态或可能的错误信息。控制系统(CS)的数据以基本配置和每辆AGV小车的设备配置形式提供,而且使用的JSON格式可以在JSON Scheme中定义。 2. 方案简介 虹科HiveMQ是一个企业级的MQTT Broker,专门为物联网应用场景的业务需求量身定制。HiveMQ企业版能够保证数据在物联网设备之间快速、高效和可靠的传输。此外,HiveMQ支持MQTT 3和MQTT 5,也支持混合版本的应用场景。同时,HiveMQ提供了一个免费的开源扩展SDK。 虹科HiveMQ扩展框架提供了一个开放的API,开发人员可以创建适合其特定基础设施的自定义扩展,而且扩展框架可用于使用自定义业务逻辑来扩展HiveMQ,而且几乎可以将任何系统集成到HiveMQ。其主要性能有: 稳定性、可扩展性、高性能、兼容性、监控、日志记录、MQTT 跟踪、企业安全扩展等。 3. 通信过程 在AGV小车指令和状态信息交换的应用场景下,主题结构如下所示。控制系统客户端使用“+”通配符模式订阅占位符,并且可以发布到每个AGV小车客户端的指令主题。AGV小车客户端只有自己主题路径的发布/订阅权限,该路径由接口名称、版本、制造商和序列号等关键信息指定。 在指令和状态信息通信过程中,每个主题都从一个子主题开始,用动态占位符分隔不同的通信设备。子主题order和orderState用于信息交换,主题deviceState用于当AGV小车处于在线和离线状态时获取信息,以处理错误情况并在特定情况下初始化设备。 每个AGV小车订阅他们各自的指令主题,并发布信息到对应的指令状态主题,当AGV小车客户端消费指令信息并处理指令或部分指令后,必须将相应的指令状态发布到orderState主题上。同时,控制系统可以订阅所有AGV小车指令状态和设备状态主题以此获取AGV小车的相关信息。 AGV小车客户端可以通过Broker或者客户端操作来断开连接。如果AGV小车客户端通过断开自身而脱机,该状态也应在控制系统中确定,而且AGV小车都应将状态为“OFF”的保留消息发送到deviceState主题。 为了从AGV小车获取设备状态,每个AGV小车客户端可以定义一个最后的遗嘱保留消息,并在连接期间设置“Will Publish”。如果AGV小车客户端下线,则向指定主题发送“Will”消息。同时,每个AGV小车客户端都可以向deviceState主题发布消息以此表明其在线状态。此外,使用MQTT 5可以在发送遗嘱消息时配置延迟,适用于设备短暂中断且没有影响的情况。而且也可以在Broker和客户端上配置Keepalive。 三、案例总结 实现AGV小车和控制系统之间的通讯所面临的挑战可以通过MQTT 5和HiveMQ来实现。 虹科HiveMQ 能够提供运行安全稳定系统所需的关键功能,MQTT 5可以完美地描述特定格式及其验证等数据相关功能以及元数据的使用,而且虹科HiveMQ支持混合场景中MQTT 5和MQTT 3客户端。 此外,安全性是一个非常重要的关键特性,如果要将不同的制造商集成到一个控制系统中,则需要使用支持不同变体安全性的解决方案。虹科HiveMQ企业安全扩展可以使用不同来源的外部身份验证和授权数据来对MQTT客户端进行身份验证和授权。 如果需要在不停机的情况下进行系统更改,则解决方案必须具有高度可用性,而且支持滚动升级和迁移方案。虹科HiveMQ具有高度可扩展性,能够支持越来越多的AGV小车。同时,虹科HiveMQ 能够提供一个控制中心,用于监视和跟踪生产环境中特定客户端、主题或消息。 为了集成其他系统,例如中央日志系统或添加任何业务功能,可以通过扩展系统来扩展虹科HiveMQ,而且大量的开源解决方案和标准解决方案已经可用。在Open HiveMQ扩展API的帮助下,每个特定业务的解决方案都可以实现。将虹科HiveMQ和MQTT 5结合起来实现VDA 5050用例将是一个完美的解决方案。
  • 热度 7
    2023-2-2 20:48
    921 次阅读|
    0 个评论
    一、应用背景 ECARX是中国汽车制造商吉利旗下的一家科技创新企业,致力于持续打造行业领先的智能网联生态开放平台,全面为车企赋能,创造更智能、更安全的出行体验,为智能互联汽车提供智能解决方案。 ECARX主要业务包括吉利汽车的智能生态系统GKUI,汽车级芯片的研发,汽车共享服务,以及从汽车联网到家庭自动化的物联网产品线。 二、 案例简介 1.应用需求 ECARX需要收集来自汽车的遥测数据,包括远程状态、驾驶日志和x-call。他们还可以向汽车发送命令,如汽车共享的数字钥匙、远程发动机启动、远程气候控制和远程锁定/解锁。 面临的挑战——汽车与云之间的连接管理 ECARX计划支持多达100万辆汽车同时连接,并通过实现最短的连接时间和延迟来确保良好的终端用户体验。 2. 解决方案 虹科HiveMQ 是一个基于 MQTT 数据传输的通信平台,旨在将数据快速、高效、可靠地传递给连接的物联网设备,HiveMQ 使用 MQTT 协议在设备和企业平台之间进行实时、双向的数据推送。 HiveMQ 通过将 MQTT 消息无缝集成到 Kafka 消息传递流中,解决了 Kafka for IoT 的问题,此外,Kafka 消息也支持分发到 HiveMQ 和 MQTT 客户端。HiveMQ 代理已扩展为包含 Kafka 协议的本机实现,这允许 HiveMQ 将 MQTT 消息转置到 Kafka 协议中,反向亦然。我们的架构允许对物联网数据进行全面的 MQTT 支持,并与 Kafka 完全集成。 三、 应用成效 HiveMQ在这个架构中被用来管理汽车和云之间的连接和双向数据移动。ECARX将HiveMQ部署到阿里云SLB的集群环境中。该集群环境由3个节点驱动,每个节点包含8个核心的16G Centos EC2服务器。MQTT消息从HiveMQ转发到Kafka集群,用于将事件流转到企业系统。HiveMQ访问存储在Redis和Postgres数据库的车辆认证和授权数据。 如今,ECARX平台已连接到超过200万辆吉利汽车。目前,同一时间段联网汽车的平均数量超过350000辆,成本降低30%。 四、方案介绍 HiveMQ 是一个基于 MQTT 数据传输的通信平台,旨在将数据快速、高效、可靠地传递给连接的物联网设备,HiveMQ 使用 MQTT 协议在设备和企业平台之间进行实时、双向的数据推送。 HiveMQ 的建立是为了解决企业在构建新的物联网应用时面临的一些关键技术挑战,包括: 1. 构建可靠、可扩展的关键业务物联网应用 2. 快速的数据交付,以满足终端用户对响应式物联网产品的期望 3. 通过有效利用硬件、网络和云资源降低运营成本 4. 将物联网数据整合到现有的企业系统中