什么是 MQTT?物联网设备如何通过 MQTT 连接云平台

news2026/5/1 19:08:50
什么是 MQTT物联网设备如何通过 MQTT 连接云平台文章目录什么是 MQTT物联网设备如何通过 MQTT 连接云平台一、MQTT 是什么二、为什么物联网中常用 MQTT1. 协议轻量通信开销小2. 支持长连接3. 支持发布/订阅模式4. 适合不稳定网络5. 支持双向通信三、MQTT 的基本架构四、MQTT Client 是什么五、MQTT Broker 是什么六、Topic 是什么1. Topic 的层级结构2. Topic 命名示例3. Topic 的设计建议七、Payload 是什么八、发布和订阅是怎么工作的1. 发布 Publish2. 订阅 Subscribe3. 发布/订阅完整流程九、MQTT 通配符1. 单层通配符 2. 多层通配符 #3. 通配符使用建议十、QoS 是什么1. QoS 0最多发送一次2. QoS 1至少发送一次3. QoS 2只发送一次十一、Retain 保留消息是什么1. Retain 的作用2. Retain 使用注意事项十二、Will Message 遗嘱消息是什么1. 遗嘱消息适合哪些场景2. 遗嘱消息的意义十三、Keep Alive 心跳机制是什么1. 心跳机制的作用2. Keep Alive 设置建议十四、物联网设备如何通过 MQTT 连接云平台1. 准备连接参数2. 设备连接 Broker3. 设备订阅命令 Topic4. 设备发布上线状态5. 设备定时上传数据6. 平台下发控制命令7. 设备返回执行结果十五、一个完整 MQTT 通信示例1. Topic 设计2. 设备上线3. 设备上传数据4. 平台下发命令5. 设备回复命令结果6. 设备异常离线十六、MQTT 和 HTTP 的简单对比十七、MQTT 和 Modbus 的关系十八、MQTT 使用中的常见问题1. Client ID 冲突2. Topic 设计混乱3. 忘记处理断线重连4. 没有做安全认证5. QoS 设置不合理十九、MQTT 安全性建议1. 使用用户名和密码2. 使用 TLS/SSL 加密3. 限制 Topic 权限4. 避免敏感信息放在 Topic 中5. 定期更新认证信息二十、MQTT 适合哪些应用场景1. 智能家居2. 工业物联网3. 车联网4. 智慧农业5. 能源与电力二十一、简单总结 MQTT 的核心概念二十二、总结下一篇预告在上一篇文章中我们介绍了物联网中常见的通信协议包括MQTT、HTTP 和 Modbus并简单对比了它们的应用场景。其中MQTT 是物联网系统中非常常见的一种通信协议。很多 IoT 平台、工业网关、智能设备、传感器系统都会支持 MQTT。那么问题来了MQTT 到底是什么为什么物联网设备经常使用 MQTT设备又是如何通过 MQTT 连接云平台的本文将从入门角度介绍 MQTT 的基本概念、通信流程和典型应用场景帮助初学者理解 MQTT 在物联网系统中的作用。一、MQTT 是什么MQTT全称是Message Queuing Telemetry Transport中文通常称为消息队列遥测传输协议。它是一种轻量级的消息传输协议特别适合物联网场景。简单来说MQTT 的作用是让设备能够以较小的通信开销把数据发送到服务器或云平台也可以接收平台下发的控制指令。在物联网系统中很多设备需要长期在线并且持续上传数据例如温湿度传感器上传环境数据智能电表上传电压、电流、功率工业网关上传 PLC 或仪表数据车辆设备上传 GPS、速度、状态信息智能家居设备接收开关控制命令。这些设备通常具有以下特点设备数量多网络环境可能不稳定带宽可能有限有些设备功耗较低需要长时间运行需要实时上传数据或接收控制指令。MQTT 正是为这类场景设计的因此它在物联网领域非常常见。二、为什么物联网中常用 MQTT相比 HTTPMQTT 更适合很多物联网设备通信场景。主要原因有以下几点。1. 协议轻量通信开销小MQTT 的协议头比较小传输数据时额外开销较低。对于一些低带宽、弱网络环境例如 4G、NB-IoT、LoRa、卫星通信等场景通信开销越小越有优势。例如一个温度传感器每隔 10 秒上传一次数据如果设备数量很多长期运行下来通信流量和服务器压力都会变得很明显。MQTT 轻量级的特点可以减少网络资源消耗。2. 支持长连接MQTT 通常基于 TCP 长连接。设备连接到 MQTT 服务器后可以保持在线状态。只要连接没有断开设备和平台之间就可以持续进行消息传输。这对于物联网设备非常重要。例如设备可以实时上传数据平台可以及时下发控制命令服务器可以判断设备是否在线设备断线后可以自动重连。3. 支持发布/订阅模式MQTT 最大的特点是采用发布/订阅模式。设备不需要直接把消息发送给某个具体应用而是把消息发布到某个主题 Topic。订阅这个 Topic 的客户端都可以收到消息。这种方式非常适合物联网系统中的多方协作。例如设备发布温度数据 → MQTT Broker → 云平台、数据库服务、告警服务、大屏系统都可以订阅这样可以降低系统之间的耦合度。4. 适合不稳定网络很多物联网设备部署在现场环境中例如工厂、变电站、车辆、户外设备、农业大棚等。这些环境中的网络可能会出现信号弱延迟高偶尔断线带宽有限设备频繁重启。MQTT 支持心跳检测、断线重连、会话保持、QoS 消息质量等级等机制更适合这种不稳定网络环境。5. 支持双向通信MQTT 不仅可以用于设备上传数据也可以用于平台下发指令。例如设备上传数据设备 → 云平台平台下发控制命令云平台 → 设备这对于远程控制场景非常有用例如远程开关设备修改设备参数下发采集周期控制继电器远程重启设备发送告警确认指令。三、MQTT 的基本架构MQTT 通信中通常有三个核心角色角色说明MQTT ClientMQTT 客户端可以是设备、网关、服务器或应用MQTT BrokerMQTT 消息服务器负责接收和转发消息Topic主题类似消息的地址或分类MQTT 的基本架构如下设备 Client → MQTT Broker → 平台 / 应用 Client也可以理解为发布者 → Broker → 订阅者其中Broker 是 MQTT 系统的核心。四、MQTT Client 是什么MQTT Client 指的是连接到 MQTT Broker 的客户端。在物联网系统中Client 可以是传感器设备工业网关边缘计算设备云平台服务数据处理程序手机 AppWeb 后台测试工具例如 MQTTX、MQTT.fx 等。只要它能够连接 MQTT Broker并进行发布或订阅操作就可以称为 MQTT Client。例如一个工业网关采集到现场设备数据后可以作为 MQTT Client 将数据发布到 Broker。工业网关 Client → MQTT Broker → 云平台云平台也可以作为 MQTT Client 订阅设备数据。五、MQTT Broker 是什么MQTT Broker 可以理解为 MQTT 消息服务器。它的主要作用是接收客户端连接验证客户端身份接收客户端发布的消息根据 Topic 将消息转发给订阅者管理客户端连接状态处理 QoS、保留消息、遗嘱消息等机制。简单来说Broker 就像一个消息中转站。设备把消息发给 BrokerBroker 再把消息转发给需要的人。例如温度传感器发布数据到 Broker 云平台订阅对应 Topic Broker 将温度数据转发给云平台常见的 MQTT Broker 有MosquittoEMQXHiveMQVerneMQ云平台自带 MQTT Broker例如阿里云 IoT、腾讯云 IoT、AWS IoT、Azure IoT Hub 等。在学习阶段可以使用 Mosquitto 或 EMQX 搭建本地 MQTT Broker 进行测试。六、Topic 是什么Topic 是 MQTT 中非常重要的概念。Topic 可以理解为消息的“地址”或“分类”。设备发布消息时需要指定一个 Topic。其他客户端订阅这个 Topic 后就可以收到对应消息。例如一个设备上传温度数据可以发布到factory/device001/temperature如果云平台订阅了这个 Topic就可以收到该设备的温度数据。1. Topic 的层级结构MQTT Topic 通常使用/表示层级结构。例如factory/workshop01/device001/temperature这个 Topic 可以理解为工厂 / 车间01 / 设备001 / 温度再比如building/floor01/room101/humidity可以理解为楼宇 / 1楼 / 101房间 / 湿度这种层级结构非常适合管理大量设备。2. Topic 命名示例不同场景下Topic 命名可以不同。例如智能家居场景home/livingroom/light/status home/livingroom/light/control home/bedroom/temperature工业物联网场景factory/line01/plc001/data factory/line01/plc001/alarm factory/line01/gateway001/status车辆联网场景vehicle/truck001/gps vehicle/truck001/speed vehicle/truck001/alarm设备上云场景device/device001/property/post device/device001/event/post device/device001/command/reply3. Topic 的设计建议在实际项目中Topic 设计很重要。建议 Topic 命名遵循以下原则层级清晰便于区分设备便于区分数据类型避免过长不要包含敏感信息命名规则要统一上行数据和下行指令最好分开。例如设备数据上报 iot/device001/data 设备状态上报 iot/device001/status 平台命令下发 iot/device001/command 设备命令回复 iot/device001/reply这样结构清晰后期维护也更方便。七、Payload 是什么Payload 是 MQTT 消息中的实际内容。Topic 表示消息发送到哪里Payload 表示发送什么内容。例如Topic: factory/device001/temperature Payload: {temperature: 28.5}其中factory/device001/temperature是 Topic{temperature: 28.5}是 Payload。Payload 可以是多种格式例如JSON字符串二进制数据XML自定义格式。在物联网系统中JSON 是比较常见的数据格式。例如{device_id:device001,timestamp:1714300000,temperature:28.5,humidity:65,status:online}这条消息表示设备device001上传了一组数据包括时间戳、温度、湿度和状态。八、发布和订阅是怎么工作的MQTT 的核心机制是发布 Publish和订阅 Subscribe。1. 发布 Publish发布就是客户端向某个 Topic 发送消息。例如设备上传温度数据Publish Topic: factory/device001/temperature Payload: {temperature: 28.5}设备发布后消息会先到 MQTT Broker。2. 订阅 Subscribe订阅就是客户端告诉 Broker如果某个 Topic 有新消息请转发给我。例如云平台订阅温度数据Subscribe Topic: factory/device001/temperature当设备向这个 Topic 发布消息时Broker 就会把消息转发给云平台。3. 发布/订阅完整流程完整流程如下1. 设备连接 MQTT Broker 2. 云平台连接 MQTT Broker 3. 云平台订阅 Topicfactory/device001/temperature 4. 设备发布温度数据到该 Topic 5. Broker 收到消息 6. Broker 将消息转发给订阅该 Topic 的云平台 7. 云平台收到数据并进行存储、显示或告警判断可以用下面的结构表示设备发布数据 ↓ MQTT Broker ↓ 云平台订阅并接收数据九、MQTT 通配符在 MQTT 中订阅 Topic 时可以使用通配符。常见通配符有两个通配符含义匹配单层 Topic#匹配多层 Topic1. 单层通配符用于匹配某一层 Topic。例如factory//temperature它可以匹配factory/device001/temperature factory/device002/temperature factory/device003/temperature但不能匹配factory/workshop01/device001/temperature因为中间多了一层。2. 多层通配符##用于匹配多层 Topic通常放在 Topic 的最后。例如factory/#它可以匹配factory/device001/temperature factory/device001/humidity factory/workshop01/device001/status factory/workshop01/line02/plc001/data如果平台想订阅某个工厂下所有设备数据可以使用类似 Topicfactory/#3. 通配符使用建议通配符很方便但在实际项目中要谨慎使用。如果订阅范围太大可能会导致接收消息过多平台处理压力增加数据权限不清晰调试困难。因此建议根据实际业务合理设计 Topic 和订阅范围。十、QoS 是什么QoS全称是Quality of Service即服务质量。MQTT 支持三种 QoS 等级用来控制消息传输的可靠性。QoS 等级含义特点QoS 0最多发送一次不保证送达开销最小QoS 1至少送达一次保证送达但可能重复QoS 2只送达一次可靠性最高开销最大1. QoS 0最多发送一次QoS 0 表示消息发送一次不进行确认。特点是速度快开销小不保证消息一定送达。适合一些允许少量丢失的数据例如高频温度数据普通状态数据非关键监测数据。例如一个温度传感器每秒上传一次数据即使偶尔丢一条也不会严重影响整体趋势。2. QoS 1至少发送一次QoS 1 表示消息至少送达一次。特点是发送方会等待确认如果没有收到确认可能会重发消息可能重复。适合较重要的数据例如告警信息设备状态变化关键运行数据。因为 QoS 1 可能出现重复消息所以平台端需要考虑去重逻辑。3. QoS 2只发送一次QoS 2 表示消息只送达一次。特点是可靠性最高流程最复杂通信开销最大。适合非常关键、不能丢失也不能重复的消息例如重要控制指令交易类消息严格状态同步场景。不过在很多普通物联网项目中QoS 0 和 QoS 1 使用更多QoS 2 相对较少。十一、Retain 保留消息是什么Retain Message中文可以称为保留消息。当客户端发布消息时如果设置了 Retain 标志Broker 会保存这个 Topic 上的最后一条消息。当新的客户端订阅该 Topic 时Broker 会立即把这条保留消息发送给它。1. Retain 的作用例如一个设备定期发布当前状态Topic: device/device001/status Payload: {status: online} Retain: true如果平台后来才订阅这个 Topic仍然可以立即收到设备最近一次状态。这对于状态类数据很有用。例如设备在线状态灯的开关状态设备当前模式最新配置版本最近一次采集值。2. Retain 使用注意事项Retain 虽然方便但也要谨慎使用。如果保留消息内容已经过期新的订阅者可能会收到旧数据造成误判。因此建议状态类数据可以使用 Retain实时采集数据不一定需要 Retain控制命令通常不建议随意使用 RetainPayload 中最好带时间戳便于判断数据是否过期。十二、Will Message 遗嘱消息是什么Will Message也叫遗嘱消息。它的作用是当设备异常断开连接时Broker 可以自动发布一条预设消息通知其他客户端该设备掉线。例如设备连接 Broker 时设置遗嘱消息Will Topic: device/device001/status Will Payload: {status: offline}如果设备正常断开连接Broker 不会发送遗嘱消息。如果设备因为断电、网络异常等原因突然断开Broker 就会自动发布这条消息。1. 遗嘱消息适合哪些场景遗嘱消息非常适合设备在线状态管理。例如设备正常连接时发布 Topic: device/device001/status Payload: {status: online} 设备异常断开时 Broker 自动发布 Topic: device/device001/status Payload: {status: offline}云平台订阅这个 Topic 后就可以判断设备是否掉线。2. 遗嘱消息的意义在物联网系统中设备是否在线是非常重要的信息。通过遗嘱消息可以实现设备离线提醒平台状态更新告警触发运维人员及时处理大屏实时显示设备在线率。十三、Keep Alive 心跳机制是什么MQTT 使用 Keep Alive 机制来检测客户端是否仍然在线。客户端连接 Broker 时会设置一个 Keep Alive 时间。如果在这个时间内客户端没有发送任何消息就需要发送心跳包来告诉 Broker我还在线。如果 Broker 在规定时间内没有收到客户端的消息或心跳就会认为客户端已经断开连接。1. 心跳机制的作用Keep Alive 的主要作用包括检测设备是否在线及时发现断线保持连接活跃配合自动重连机制支持设备状态管理。2. Keep Alive 设置建议Keep Alive 时间不宜过短也不宜过长。如果设置太短心跳包太频繁增加网络流量增加设备功耗增加服务器压力。如果设置太长设备掉线后发现不及时平台在线状态更新滞后。实际项目中可以根据网络环境和业务要求设置例如30 秒 60 秒 120 秒 300 秒对于普通在线监测设备60 秒或 120 秒是比较常见的选择。十四、物联网设备如何通过 MQTT 连接云平台下面用一个简单流程说明设备如何通过 MQTT 连接云平台。假设有一个温湿度设备需要通过 MQTT 上传数据到云平台。整体流程如下设备准备连接参数 ↓ 连接 MQTT Broker ↓ 身份认证 ↓ 订阅下行命令 Topic ↓ 发布设备状态 ↓ 定时上传传感器数据 ↓ 接收云平台控制命令 ↓ 断线后自动重连1. 准备连接参数设备连接 MQTT Broker 前通常需要准备以下参数参数说明Broker 地址MQTT 服务器地址例如域名或 IP端口常见端口为 1883 或 8883Client ID客户端 ID用于标识设备Username用户名Password密码TLS/SSL是否启用加密连接Topic发布和订阅的主题例如Broker: mqtt.example.com Port: 1883 Client ID: device001 Username: device001 Password: xxxxxx Publish Topic: device/device001/data Subscribe Topic: device/device001/command如果使用加密连接端口通常可能是88832. 设备连接 Broker设备使用 MQTT 客户端程序连接 Broker。连接时通常会携带Client IDUsernamePasswordKeep AliveClean SessionWill MessageTLS 证书信息。连接成功后Broker 会返回连接成功响应。连接失败时需要检查Broker 地址是否正确端口是否开放用户名密码是否正确Client ID 是否冲突TLS 证书是否正确网络是否能访问服务器。3. 设备订阅命令 Topic设备连接成功后通常会订阅一个平台下发命令的 Topic。例如device/device001/command平台如果想控制这个设备就可以向这个 Topic 发布命令。例如{cmd:set_interval,value:60}设备收到后可以将采集周期设置为 60 秒。4. 设备发布上线状态设备连接成功后可以发布一条上线消息。例如Topic: device/device001/status Payload: {status: online}如果配合 Retain 和 Will Message就可以实现设备在线/离线状态管理。例如设备上线 {status: online} 设备异常掉线 {status: offline}5. 设备定时上传数据设备采集到传感器数据后可以定时发布到数据 Topic。例如Topic: device/device001/dataPayload 示例{device_id:device001,timestamp:1714300000,temperature:28.5,humidity:65}云平台订阅该 Topic 后可以进行数据解析数据存储曲线展示阈值判断告警推送报表统计。6. 平台下发控制命令平台可以向设备订阅的命令 Topic 发布控制指令。例如Topic: device/device001/commandPayload 示例{cmd:reboot}设备收到后执行重启操作。再比如平台下发修改采集周期命令{cmd:set_report_interval,interval:60}设备收到后将数据上传周期调整为 60 秒。7. 设备返回执行结果为了让平台知道命令是否执行成功设备通常需要返回命令响应。例如Topic: device/device001/replyPayload 示例{cmd:set_report_interval,result:success,interval:60}如果失败可以返回{cmd:set_report_interval,result:failed,reason:invalid parameter}这样平台就可以知道指令执行结果。十五、一个完整 MQTT 通信示例下面用一个简单例子串联整个流程。假设设备编号为device001。1. Topic 设计类型Topic数据上报device/device001/data状态上报device/device001/status命令下发device/device001/command命令回复device/device001/reply2. 设备上线设备连接 Broker 后发布上线状态Topic: device/device001/status Payload: {status: online}3. 设备上传数据设备上传温湿度数据Topic: device/device001/data Payload: {temperature: 28.5, humidity: 65}4. 平台下发命令平台下发修改采集周期命令Topic: device/device001/command Payload: {cmd: set_report_interval, interval: 60}5. 设备回复命令结果设备执行成功后回复Topic: device/device001/reply Payload: {cmd: set_report_interval, result: success}6. 设备异常离线如果设备异常断开Broker 自动发布遗嘱消息Topic: device/device001/status Payload: {status: offline}通过这个流程云平台就可以完成设备接入、数据采集、状态管理和远程控制。十六、MQTT 和 HTTP 的简单对比很多初学者会问MQTT 和 HTTP 都能上传数据为什么物联网更常用 MQTT可以简单对比如下对比项MQTTHTTP通信模式发布/订阅请求/响应连接方式通常长连接通常短连接实时性较好一般通信开销较小较大设备控制更方便需要轮询或额外机制适合场景设备上云、实时通信API 接口、文件上传、系统对接典型应用IoT 平台、传感器、网关Web 服务、业务系统、后台接口简单理解MQTT 更像一个长期在线的消息通道HTTP 更像一次请求一次响应的接口调用。所以如果设备需要长期在线、实时上传数据、接收平台命令MQTT 往往更合适。如果只是偶尔上传数据、调用 API、上传文件或对接业务系统HTTP 也很合适。十七、MQTT 和 Modbus 的关系在工业物联网中MQTT 和 Modbus 经常一起出现。但它们解决的问题不同。Modbus 常用于工业现场设备通信MQTT 常用于设备或网关连接云平台。例如PLC / 仪表 / 电表 → Modbus → 工业网关 → MQTT → 云平台在这个架构中PLC、电表、仪表通过 Modbus 与工业网关通信工业网关采集现场数据工业网关将数据转换成 JSON 或其他格式工业网关通过 MQTT 上传到云平台云平台进行存储、展示、告警和远程控制。因此Modbus 和 MQTT 通常不是替代关系而是配合关系。可以简单理解为Modbus 负责现场采集MQTT 负责数据上云。十八、MQTT 使用中的常见问题1. Client ID 冲突MQTT 中Client ID 通常需要唯一。如果两个设备使用相同的 Client ID 连接同一个 Broker可能会导致其中一个设备被踢下线。因此每台设备应该使用唯一的 Client ID。例如device001 device002 device003或者gateway_SN1234562. Topic 设计混乱如果 Topic 设计不清晰后期系统会很难维护。例如不建议随意设计成data1 test device abc更建议使用层级清晰的方式factory/line01/device001/data factory/line01/device001/status factory/line01/device001/command3. 忘记处理断线重连现场设备网络不稳定是常见情况。因此 MQTT 客户端需要考虑连接失败重试断线自动重连重连后重新订阅 Topic离线期间数据是否缓存重复消息如何处理。4. 没有做安全认证如果 MQTT Broker 暴露在公网必须考虑安全问题。建议至少使用用户名和密码TLS/SSL 加密访问控制 ACL设备级权限管理不同设备使用不同账号禁止匿名访问。5. QoS 设置不合理QoS 并不是越高越好。QoS 越高可靠性越高但通信开销也越大。一般建议普通采集数据QoS 0 或 QoS 1告警数据QoS 1重要控制命令QoS 1 或 QoS 2高频非关键数据QoS 0。十九、MQTT 安全性建议物联网设备数量多一旦安全设计不当可能带来较大风险。因此在实际项目中MQTT 安全非常重要。建议从以下几个方面考虑。1. 使用用户名和密码不要让设备匿名连接 Broker。每台设备最好使用独立账号方便权限管理和问题追踪。2. 使用 TLS/SSL 加密如果设备通过公网连接云平台建议使用 TLS/SSL 加密。普通 MQTT 端口通常是1883MQTT over TLS 常见端口是8883加密连接可以防止数据在传输过程中被窃听或篡改。3. 限制 Topic 权限不同设备应该只能访问自己的 Topic。例如设备device001只能发布或订阅device/device001/#不能访问device/device002/#这样可以防止设备之间互相读取或控制。4. 避免敏感信息放在 Topic 中Topic 有时可能会被日志记录或监控系统显示因此不建议在 Topic 中放入密码、Token 等敏感信息。例如不建议device/device001/password123/data5. 定期更新认证信息对于长期运行的物联网系统建议支持密码更新Token 更新证书更新设备吊销权限变更。这样可以提高系统安全性。二十、MQTT 适合哪些应用场景MQTT 的应用非常广泛。常见场景包括1. 智能家居例如智能灯智能插座温湿度传感器空调控制门锁状态上报。home/livingroom/light/status home/livingroom/light/control2. 工业物联网例如工业网关上传 PLC 数据电表数据采集设备运行状态监测远程告警工厂能耗监测。factory/line01/plc001/data factory/line01/gateway001/status3. 车联网例如GPS 位置上传车辆速度上传发动机状态车辆告警远程诊断。vehicle/truck001/gps vehicle/truck001/alarm4. 智慧农业例如土壤湿度监测温室环境监测自动灌溉控制水泵远程控制光照强度采集。farm/greenhouse01/temperature farm/greenhouse01/pump/control5. 能源与电力例如光伏逆变器数据上传储能系统监控电表数据采集配电柜状态监测远程告警。energy/site001/meter001/data energy/site001/inverter001/status二十一、简单总结 MQTT 的核心概念为了方便记忆可以把 MQTT 的核心概念总结如下概念简单理解Client连接 MQTT 的客户端可以是设备或平台BrokerMQTT 消息服务器负责转发消息Topic消息主题类似消息地址Payload消息内容Publish发布消息Subscribe订阅消息QoS消息可靠性等级Retain保留最后一条消息Will Message异常掉线时自动发送的遗嘱消息Keep Alive心跳机制用于检测连接状态如果只记住一句话MQTT 是一种基于发布/订阅模式的轻量级消息协议非常适合物联网设备上云、数据采集和远程控制。二十二、总结MQTT 是物联网系统中非常重要的通信协议。它具有轻量级、低开销、支持长连接、支持发布/订阅、适合不稳定网络、支持双向通信等特点因此被广泛用于设备上云、工业网关、智能家居、车联网、能源监测等场景。在 MQTT 系统中最核心的三个概念是Client客户端可以是设备、网关、平台或应用Broker消息服务器负责接收和转发消息Topic主题用于区分不同类型的消息。一个典型的设备通过 MQTT 连接云平台的流程是设备连接 Broker ↓ 设备认证成功 ↓ 设备订阅命令 Topic ↓ 设备发布在线状态 ↓ 设备定时上传数据 ↓ 平台下发控制命令 ↓ 设备执行并回复结果在工业物联网中MQTT 通常和 Modbus、工业网关一起使用PLC / 仪表 / 电表 → Modbus → 工业网关 → MQTT → 云平台可以简单理解为Modbus 负责现场数据采集MQTT 负责数据上传云平台。掌握 MQTT 的基本原理后就能更好地理解物联网设备如何接入云平台以及设备数据如何实现远程采集、监控和控制。下一篇预告在下一篇文章中我们可以继续深入介绍《什么是 Modbus工业网关如何采集 PLC 和仪表数据》下一篇将重点讲解Modbus 是什么Modbus RTU 和 Modbus TCP 的区别主站 Master 和从站 Slave 的关系寄存器、线圈、功能码是什么意思工业网关如何通过 Modbus 采集现场设备数据。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2572831.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SpringBoot-17-MyBatis动态SQL标签之常用标签

文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…

wordpress后台更新后 前端没变化的解决方法

使用siteground主机的wordpress网站,会出现更新了网站内容和修改了php模板文件、js文件、css文件、图片文件后,网站没有变化的情况。 不熟悉siteground主机的新手,遇到这个问题,就很抓狂,明明是哪都没操作错误&#x…

网络编程(Modbus进阶)

思维导图 Modbus RTU(先学一点理论) 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议,由 Modicon 公司(现施耐德电气)于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…

UE5 学习系列(二)用户操作界面及介绍

这篇博客是 UE5 学习系列博客的第二篇,在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下: 【Note】:如果你已经完成安装等操作,可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作,重…

IDEA运行Tomcat出现乱码问题解决汇总

最近正值期末周,有很多同学在写期末Java web作业时,运行tomcat出现乱码问题,经过多次解决与研究,我做了如下整理: 原因: IDEA本身编码与tomcat的编码与Windows编码不同导致,Windows 系统控制台…

利用最小二乘法找圆心和半径

#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …

使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式

一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明&#xff1a;假设每台服务器已…

XML Group端口详解

在XML数据映射过程中&#xff0c;经常需要对数据进行分组聚合操作。例如&#xff0c;当处理包含多个物料明细的XML文件时&#xff0c;可能需要将相同物料号的明细归为一组&#xff0c;或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码&#xff0c;增加了开…

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器的上位机配置操作说明

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器专为工业环境精心打造&#xff0c;完美适配AGV和无人叉车。同时&#xff0c;集成以太网与语音合成技术&#xff0c;为各类高级系统&#xff08;如MES、调度系统、库位管理、立库等&#xff09;提供高效便捷的语音交互体验。 L…

(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)

题目&#xff1a;3442. 奇偶频次间的最大差值 I 思路 &#xff1a;哈希&#xff0c;时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况&#xff0c;哈希表这里用数组即可实现。 C版本&#xff1a; class Solution { public:int maxDifference(string s) {int a[26]…

【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型

摘要 拍照搜题系统采用“三层管道&#xff08;多模态 OCR → 语义检索 → 答案渲染&#xff09;、两级检索&#xff08;倒排 BM25 向量 HNSW&#xff09;并以大语言模型兜底”的整体框架&#xff1a; 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后&#xff0c;分别用…

【Axure高保真原型】引导弹窗

今天和大家中分享引导弹窗的原型模板&#xff0c;载入页面后&#xff0c;会显示引导弹窗&#xff0c;适用于引导用户使用页面&#xff0c;点击完成后&#xff0c;会显示下一个引导弹窗&#xff0c;直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…

接口测试中缓存处理策略

在接口测试中&#xff0c;缓存处理策略是一个关键环节&#xff0c;直接影响测试结果的准确性和可靠性。合理的缓存处理策略能够确保测试环境的一致性&#xff0c;避免因缓存数据导致的测试偏差。以下是接口测试中常见的缓存处理策略及其详细说明&#xff1a; 一、缓存处理的核…

龙虎榜——20250610

上证指数放量收阴线&#xff0c;个股多数下跌&#xff0c;盘中受消息影响大幅波动。 深证指数放量收阴线形成顶分型&#xff0c;指数短线有调整的需求&#xff0c;大概需要一两天。 2025年6月10日龙虎榜行业方向分析 1. 金融科技 代表标的&#xff1a;御银股份、雄帝科技 驱动…

观成科技:隐蔽隧道工具Ligolo-ng加密流量分析

1.工具介绍 Ligolo-ng是一款由go编写的高效隧道工具&#xff0c;该工具基于TUN接口实现其功能&#xff0c;利用反向TCP/TLS连接建立一条隐蔽的通信信道&#xff0c;支持使用Let’s Encrypt自动生成证书。Ligolo-ng的通信隐蔽性体现在其支持多种连接方式&#xff0c;适应复杂网…

铭豹扩展坞 USB转网口 突然无法识别解决方法

当 USB 转网口扩展坞在一台笔记本上无法识别,但在其他电脑上正常工作时,问题通常出在笔记本自身或其与扩展坞的兼容性上。以下是系统化的定位思路和排查步骤,帮助你快速找到故障原因: 背景: 一个M-pard(铭豹)扩展坞的网卡突然无法识别了,扩展出来的三个USB接口正常。…

未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?

编辑&#xff1a;陈萍萍的公主一点人工一点智能 未来机器人的大脑&#xff1a;如何用神经网络模拟器实现更智能的决策&#xff1f;RWM通过双自回归机制有效解决了复合误差、部分可观测性和随机动力学等关键挑战&#xff0c;在不依赖领域特定归纳偏见的条件下实现了卓越的预测准…

Linux应用开发之网络套接字编程(实例篇)

服务端与客户端单连接 服务端代码 #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <arpa/inet.h> #include <pthread.h> …

华为云AI开发平台ModelArts

华为云ModelArts&#xff1a;重塑AI开发流程的“智能引擎”与“创新加速器”&#xff01; 在人工智能浪潮席卷全球的2025年&#xff0c;企业拥抱AI的意愿空前高涨&#xff0c;但技术门槛高、流程复杂、资源投入巨大的现实&#xff0c;却让许多创新构想止步于实验室。数据科学家…

深度学习在微纳光子学中的应用

深度学习在微纳光子学中的主要应用方向 深度学习与微纳光子学的结合主要集中在以下几个方向&#xff1a; 逆向设计 通过神经网络快速预测微纳结构的光学响应&#xff0c;替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…