当前位置: 首页 > article >正文

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

什么是 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 采集现场设备数据。

相关文章:

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

什么是 MQTT?物联网设备如何通过 MQTT 连接云平台 文章目录什么是 MQTT?物联网设备如何通过 MQTT 连接云平台一、MQTT 是什么?二、为什么物联网中常用 MQTT?1. 协议轻量,通信开销小2. 支持长连接3. 支持发布/订阅模式4…...

【卷卷观察】学历年龄还重不重要?AI 时代真正稀缺的是会判断的人

中文互联网今天最容易吵起来的一条 AI 新闻,是钉钉创始人陈航谈 AIQ。多家媒体报道,陈航在 2026 清华五道口金融发展论坛上说,AI 时代招人,学历、经历、年龄都变得不重要,更重要的是真诚可靠、心态开放,以及…...

Gacua:基于Go与Web技术的跨平台桌面应用开发框架实战指南

1. 项目概述:一个被低估的跨平台GUI开发利器如果你正在为桌面应用开发选型而头疼,尤其是需要在Windows、macOS和Linux上都能跑起来,同时希望界面足够现代、开发体验足够友好,那么openmule/gacua这个项目绝对值得你花时间深入研究。…...

使用Taotoken后API调用延迟与稳定性可观测体验分享

使用Taotoken后API调用延迟与稳定性可观测体验分享 1. 用量看板的核心观测维度 在持续使用Taotoken平台进行API调用的过程中,用量看板提供了几个关键维度的可视化数据。最常用的是按时间分布的延迟热力图,能够直观显示不同时段请求响应时间的集中区间。…...

在 OpenClaw 项目中指定使用 Taotoken 提供的特定模型主键

在 OpenClaw 项目中指定使用 Taotoken 提供的特定模型主键 1. 获取 Taotoken 模型主键 在 OpenClaw 项目中使用 Taotoken 平台提供的模型服务前,首先需要获取目标模型的唯一标识符。登录 Taotoken 控制台后,进入「模型广场」页面,此处会列出…...

【3】明明建了索引,为什么 MySQL 还是慢?一文带你理清 InnoDB 存储引擎

有些慢查询最让人别扭的地方,不是它慢,而是它看上去本来不该慢。 比如一张订单表,明明已经建了联合索引,EXPLAIN 里也确实看到了命中的 key,条件过滤看起来没跑偏,排序字段也放进了索引里。可一到数据量上来…...

企微私域新客 AI 运营实战:轻量化工具落地指南

前言企微新客运营的核心,是通过自动化能力降低人力成本、提升响应效率,最终提高新客留存与转化。但在实际落地中,自研系统周期长、成本高,通用 SCRM 功能冗余、操作复杂,很多企业最终陷入「用了工具,效率没…...

对比使用 Taotoken 前后管理多个 API Key 的便捷性提升

使用 Taotoken 统一管理 API Key 的实践体验 1. 多模型接入的密钥管理挑战 在同时使用多个大模型服务时,项目团队通常需要维护不同厂商的 API Key。这些密钥可能分散在多个平台,各自有不同的权限设置、调用限制和计费方式。传统管理方式下,…...

【1】哪怕服务器当场爆炸,你的钱也丢不了!一文带你理清MySQL事务原理

写在前面 设想一个很日常的场景:手机银行里点了一次转账,页面转了几秒,最后弹出来一句“系统繁忙,请稍后再试”。 这时候脑子里最先冒出来的往往不是“重试一下就行”,而是更具体也更扎心的那句:钱到底扣了…...

深入STM32G431 GPIO:从推挽/开漏原理到蓝桥杯板载LED锁存器电路分析与代码实现

STM32G431 GPIO深度解析:从MOS管结构到锁存器实战 当你第一次在STM32开发板上点亮LED时,或许会疑惑:为什么推挽输出能直接驱动LED?开发板上那个神秘的锁存器芯片究竟起什么作用?HAL库函数背后到底隐藏着哪些硬件操作&…...

在Node.js后端服务中集成Taotoken实现稳定AI调用

在Node.js后端服务中集成Taotoken实现稳定AI调用 1. 场景需求与方案选型 现代后端服务常需集成AI能力实现智能交互、内容生成等功能。Taotoken作为大模型聚合平台,提供OpenAI兼容API与多模型支持,适合需要稳定调用且希望避免厂商锁定的Node.js项目。其…...

观察不同时段调用Taotoken聚合API的延迟与稳定性表现

观察不同时段调用Taotoken聚合API的延迟与稳定性表现 1. 数据采集方法论 在实际项目中接入Taotoken聚合API后,我们通过以下方式采集调用数据:在应用层记录每次API请求的响应时间(从发起请求到收到完整响应的时间戳差值)&#xf…...

AS5600磁编码器角度读取全解析:从I2C地址扫描到STM32软件模拟通信实战

AS5600磁编码器与STM32深度集成指南:从硬件设计到软件模拟I2C全流程解析 在工业自动化、机器人关节控制和精密仪器仪表领域,磁编码器因其非接触式测量特性正逐渐取代传统光电编码器。AS5600作为一款12位分辨率的磁性位置传感器,通过I2C接口提…...

Swoole 5.1 + LLM 流式响应长连接如何扛住10万并发?——某金融级AI客服系统压测实录(含QPS 8642、P99<127ms完整链路)

更多请点击: https://intelliparadigm.com 第一章:Swoole 5.1 LLM 流式响应长连接架构全景概览 Swoole 5.1 作为 PHP 领域首个原生支持协程调度器(Scheduler)与完整 HTTP/2 Server 的版本,为构建低延迟、高并发的 LL…...

从VSCode到Slack:聊聊那些用Electron开发的桌面应用,以及我们为什么选它

从VSCode到Slack:Electron技术选型的商业逻辑与实战思考 当团队面临桌面应用开发的技术选型时,Electron往往是一个绕不开的话题。这个由GitHub开发的开源框架,已经悄然改变了我们日常使用的许多工具——从程序员每天敲代码的VSCode&#xff0…...

AI视频字幕去除终极指南:Video Subtitle Remover完整解决方案

AI视频字幕去除终极指南:Video Subtitle Remover完整解决方案 【免费下载链接】video-subtitle-remover 基于AI的图片/视频硬字幕去除、文本水印去除,无损分辨率生成去字幕、去水印后的图片/视频文件。无需申请第三方API,本地实现。AI-based …...

别再让PyQt5界面卡死了!用QThread实现后台下载文件(附完整信号槽代码)

PyQt5多线程实战:用QThread打造流畅文件下载界面 1. 为什么你的PyQt5界面会卡死? 刚接触PyQt5的开发者经常会遇到一个令人头疼的问题——当程序执行文件下载或数据处理任务时,整个界面突然变得卡顿甚至无响应。这种现象背后的根源在于GUI程序…...

音乐解锁神器:Unlock-Music浏览器端一键解密教程

音乐解锁神器:Unlock-Music浏览器端一键解密教程 【免费下载链接】unlock-music 在浏览器中解锁加密的音乐文件。原仓库: 1. https://github.com/unlock-music/unlock-music ;2. https://git.unlock-music.dev/um/web 项目地址: https://gi…...

vscode 必备插件

1 sftp 代码自动同步。 可以很方便地切换代码发送的目标服务器2 git graph 直观查看代码分支管理3 prettier-code formatter 代码自动格式化,可自定义...

别再死记硬背了!用这5个Mathf函数搞定Unity角色平滑移动(附完整代码)

别再死记硬背了!用这5个Mathf函数搞定Unity角色平滑移动(附完整代码) 在Unity游戏开发中,角色的移动效果直接影响玩家的游戏体验。你是否遇到过角色移动生硬、摄像机跟随卡顿、或者UI动画不够流畅的问题?这些常见痛点的…...

Cursor智能体开发:环境配置

Cloud Agent 运行在隔离的 Ubuntu 机器上。我们建议将该环境配置为让 Agent 能访问到与人类开发者使用的相同工具。 前往 cursor.com/onboard 配置你的环境。 环境选项 为你的云端 agent 配置环境主要有两种方式: 让 Cursor 的 agent 在 cursor.com/onboard 上自…...

告别‘No buffer space available’:手把手教你调优Linux下MCP2515 CAN驱动发送缓冲区

告别‘No buffer space available’:手把手教你调优Linux下MCP2515 CAN驱动发送缓冲区 在嵌入式Linux开发中,CAN总线通讯的稳定性和高性能往往是项目成败的关键。当开发者成功驱动MCP2515芯片后,常常会遇到一个令人头疼的问题——在高速数据传…...

保姆级教程:在Ubuntu 20.04上为i.MX6ULL编译和烧写U-Boot 2016.03(含交叉编译器配置全流程)

i.MX6ULL嵌入式开发实战:从零构建定制化U-Boot镜像 在嵌入式Linux开发中,U-Boot作为系统启动的"第一道关卡",其稳定性和性能直接影响整个系统的可靠性。本文将带您深入探索基于NXP i.MX6ULL处理器的U-Boot定制化开发全流程&#xf…...

Cursor Pro破解工具技术解析:5大核心功能实现永久免费AI编程助手

Cursor Pro破解工具技术解析:5大核心功能实现永久免费AI编程助手 【免费下载链接】cursor-free-vip [Support 0.45](Multi Language 多语言)自动注册 Cursor Ai ,自动重置机器ID , 免费升级使用Pro 功能: Youve reache…...

3个核心功能,让你的华硕笔记本性能飙升:G-Helper深度体验指南

3个核心功能,让你的华硕笔记本性能飙升:G-Helper深度体验指南 【免费下载链接】g-helper G-Helper is a fast, native tool for tuning performance, fans, GPU, battery, and RGB on any Asus laptop or handheld - ROG Zephyrus, Flow, Strix, TUF, Vi…...

告别‘炼丹’黑盒:用HuggingFace Transformers库逐行调试T5模型注意力机制

告别“炼丹”黑盒:用HuggingFace Transformers库逐行调试T5模型注意力机制 在深度学习领域,模型调试常常被比作“炼丹”——开发者投入大量数据和计算资源,却难以窥见模型内部的真实运作机制。这种黑盒特性尤其体现在Transformer架构的注意力…...

Ubuntu 18.04 + ROS Melodic 下,手把手搞定YOLOv5与CUDA 10.2的完美配对(避坑显卡驱动)

Ubuntu 18.04与ROS Melodic环境下YOLOv5的终极配置指南 在机器人视觉开发领域,YOLOv5因其出色的实时检测性能而广受欢迎。然而,当它遇上ROS Melodic这个经典但稍显"固执"的机器人操作系统时,版本兼容性问题往往让开发者头疼不已。本…...

解锁音乐自由:qmcdump如何打破QQ音乐格式壁垒

解锁音乐自由:qmcdump如何打破QQ音乐格式壁垒 【免费下载链接】qmcdump 一个简单的QQ音乐解码(qmcflac/qmc0/qmc3 转 flac/mp3),仅为个人学习参考用。 项目地址: https://gitcode.com/gh_mirrors/qm/qmcdump 你是否曾因QQ音…...

10分钟搭建完整心电监测系统:AD8232开源方案让健康数据触手可及

10分钟搭建完整心电监测系统:AD8232开源方案让健康数据触手可及 【免费下载链接】AD8232_Heart_Rate_Monitor AD8232 Heart Rate Monitor 项目地址: https://gitcode.com/gh_mirrors/ad/AD8232_Heart_Rate_Monitor 想要了解自己的心脏健康状态吗?…...

如何在5分钟内用AI智能生成专业演示文稿:PPTAgent与DeepPresenter深度解析

如何在5分钟内用AI智能生成专业演示文稿:PPTAgent与DeepPresenter深度解析 【免费下载链接】PPTAgent An Agentic Framework for Reflective PowerPoint Generation 项目地址: https://gitcode.com/gh_mirrors/pp/PPTAgent 你是否曾经花费数小时甚至数天时间…...