MQTT协议问题之如何搭建物联网空调的服务器

简介: MQTT协议是一个轻量级的消息传输协议,设计用于物联网(IoT)环境中设备间的通信;本合集将详细阐述MQTT协议的基本原理、特性以及各种实际应用场景,供用户学习和参考。

问题一:设备端SDK是否支持MQTT协议的断线重连?


设备端SDK是否支持MQTT协议的断线重连?


参考回答:


支持。

测试场景描述:开发板通过Wi-Fi连接路由器。把网线拔掉后,MQTT协议的设备端会自动尝试和服务器重新建立连接。重连尝试时间间隔是1s、2s、4s、8s、…。C SDK重试的最大间隔时间默认是60秒,即断网超过60s后仍未连接成功,设备端会每隔60秒尝试与服务器进行重连。您可以自定义最大间隔时间。

Android和Java SDK最大间隔时间为128秒,不支持自定义最大间隔时间。


关于本问题的更多回答可点击原文查看:https://developer.aliyun.com/ask/281936?spm=5176.28261954.J_7341193060.493.40c22f3d058OAB&scm=20140722.S_community@@%E9%97%AE%E7%AD%94@@281936._.ID_281936-RL_mqtt%E5%8D%8F%E8%AE%AE-LOC_search~UND~community~UND~item-OR_ser-V_3-P0_28


问题二:MQTT协议pub消息payload格式是怎么样的?


MQTT协议pub消息payload格式是怎么样的?


参考回答:

物联网平台没有制定pub消息payload的具体字段有那些。您根据应用场景制定自己的协议,然后以JSON格式放到pub消息载体里面传给服务端。


关于本问题的更多回答可点击原文查看:https://developer.aliyun.com/ask/279052?spm=5176.28261954.J_7341193060.498.40c22f3d058OAB&scm=20140722.S_community@@%E9%97%AE%E7%AD%94@@279052._.ID_279052-RL_mqtt%E5%8D%8F%E8%AE%AE-LOC_search~UND~community~UND~item-OR_ser-V_3-P0_29


问题三:如何用MQTT协议搭建一个物联网空调的服务器


想问一下,如何用MQTT协议搭建一个物联网空调的服务器,刚开始学这些东西还有很多不懂的,希望大佬教一下,谢谢


关于本问题的更多回答可点击原文查看:https://developer.aliyun.com/ask/231711?spm=5176.28261954.J_7341193060.502.40c22f3d058OAB&scm=20140722.S_community@@%E9%97%AE%E7%AD%94@@231711._.ID_231711-RL_mqtt%E5%8D%8F%E8%AE%AE-LOC_search~UND~community~UND~item-OR_ser-V_3-P0_30


问题四:MQTT协议pub消息payload格式是怎么样的?


设备端SDK使用问题 MQTT连接


参考回答:


阿里云IoT套件没有制定pub消息payload具体字段有那些,需要客户根据应用场景制定自己的协议,然后以JSON格式放到pub消息载体里面传给服务端。


关于本问题的更多回答可点击原文查看:https://developer.aliyun.com/ask/130330?spm=5176.28261954.J_7341193060.509.40c22f3d058OAB&scm=20140722.S_community@@%E9%97%AE%E7%AD%94@@130330._.ID_130330-RL_mqtt%E5%8D%8F%E8%AE%AE-LOC_search~UND~community~UND~item-OR_ser-V_3-P0_31


问题五:阿里云利用MQTT协议,如何多个手机同时在线控制一个设备?


阿里云利用MQTT协议,如何多个手机同时在线控制一个设备?


参考回答:

MQTT是一个轻量级的消息发布/订阅协议,它是实现基于手机客户端的消息推送服务器的理想解决方案。   我们可以从这里下载该项目的实例代码,并且可以找到一个采用PHP书写的服务器端实现。   架构如下所示:   wmqtt.jar 是IBM提供的MQTT协议的实现。你可以从如下站点下载它。你可以将该jar包加入你自己的Android应用程序中。   Really Small Message Broker (RSMB) ,他是一个简单的MQTT代理,同样由IBM提供。缺省打开1883端口,应用程序当中,它负责接收来自服务器的消息并将其转发给指定的移动设备。   SAM是一个针对MQTT写的PHP库。你可以从这个下载它.   send_mqtt.php是一个通过POST接收消息并且通过SAM将消息发送给RSMB的PHP脚本。   实例代码:   Ø 采用XMPP协议实现Android推送   这是我在项目中采用的方案。事实上Google官方的C2DM服务器底层也是采用XMPP协议进行的封装。   XMPP(可扩展通讯和表示协议)是基于可扩展标记语言(XML)的协议,它用于即时消息(IM)以及在线探测。这个协议可能最终允许因特网用户向因特网上的其他任何人发送即时消息。   androidpn是一个基于XMPP协议的java开源Android push notification实现。它包含了完整的客户端和服务器端。经过源代码研究我发现,该服务器端基本是在另外一个开源工程openfire基础上修改实现的,不过比较郁闷的是androidpn的文档是由韩语写的,所以整个研究过程基本都是读源码。它的实现示意图如下:   androidpn客户端需要用到一个基于java的开源XMPP协议包asmack,这个包同样也是基于openfire下的另外一个开源项目smack,不过我们不需要自己编译,可以直接把androidpn客户端里面的asmack.jar拿来使用。客户端利用asmack中提供的XMPPConnection类与服务器建立持久连接,并通过该连接进行用户注册和登录认证,同样也是通过这条连接,接收服务器发送的通知。   androidpn服务器端也是java语言实现的,基于openfire开源工程,不过它的Web部分采用的是spring框架,这一点与openfire是不同的。Androidpn服务器包含两个部分,一个是侦听在5222端口上的XMPP服务,负责与客户端的XMPPConnection类进行通信,作用是用户注册和身份认证,并发送推送通知消息。另外一部分是Web服务器,采用一个轻量级的HTTP服务器,负责接收用户的Web请求。服务器架构如下:   最上层包含四个组成部分,分别是SessionManager,Auth Manager,PresenceManager以及Notification Manager。SessionManager负责管理客户端与服务器之间的会话,Auth Manager负责客户端用户认证管理,Presence Manager负责管理客户端用户的登录状态,NotificationManager负责实现服务器向客户端推送消息功能。   服务器端界面如下,分别对应了上述的几个功能模块:   发送以后,我们可以在手机端看到接收的消息:

答案来源网络,供参考,希望对您有帮助


关于本问题的更多回答可点击原文查看:https://developer.aliyun.com/ask/136565?spm=5176.28261954.J_7341193060.514.40c22f3d058OAB&scm=20140722.S_community@@%E9%97%AE%E7%AD%94@@136565._.ID_136565-RL_mqtt%E5%8D%8F%E8%AE%AE-LOC_search~UND~community~UND~item-OR_ser-V_3-P0_32


问题六:有用esp32 刷microPython 用mqtt协议连上 接入物联网的么?


环境

esp32 wroom-32

microPython v1.12

simple.py MQTTClient

控制台已经配置好了。

mqttClientId

mqttUsername

mqttPassword

三个值使用 MQTT.qx客户端可以连上(在控制台可以看见) ,但是用microPython 报

raceback (most recent call last):

File "boot.py", line 53, in

File "simple.py", line 86, in connect

IndexError: bytes index out of range


参考回答:

网络上已经有使用python 模拟设备接入阿里云,手里刚好有块ESP32的小板子,在上面跑过Alios Things,然后接入阿里云。但是终究感觉麻烦,有的时候只是做一个很简单的应用,跑os确实不太方便。使用micropython直接操作ESP32很是方便,就想着如果能通过micropython 直接接入物联网,那就方便多了。可以非常简单地接入云端,而且操作简单。先放上主干部分,有时间再补充细节

from umqtt.simple import MQTTClient
import usocket as socket
import time
import wifi
 
wifi.connect()
 
#Demo_01
ProductKey = "a1Mf4HZ5k**"
ClientId = "1234|securemode=3,signmethod=hmacsha1|"
DeviceName = "Demo_01"
DeviceSecret = "****************************"
 
strBroker = ProductKey + ".iot-as-mqtt.cn-shanghai.aliyuncs.com"
Brokerport = 1883
 
user_name = "Demo_01&a1Mf4HZ5k**"
user_password = "***************************************"
 
print("clientid:",ClientId,"\n","Broker:",strBroker,"\n","User Name:",user_name,"\n","Password:",user_password,"\n")
 
 
def connect():
  client = MQTTClient(client_id = ClientId,server= strBroker,port=Brokerport,user=user_name, password=user_password,keepalive=60) 
  #please make sure keepalive value is not 0
  
  client.connect()
 
  temperature =25.00
  while temperature < 30:
    temperature += 0.5    
  
    send_mseg = '{"params": {"IndoorTemperature": %s},"method": "thing.event.property.post"}' % (temperature)
    client.publish(topic="/sys/a1Mf4HZ5kET/Demo_01/thing/event/property/post", msg=send_mseg,qos=1, retain=False)
    
    time.sleep(3)
 
  while True:
    pass
 
  #client.disconnect()

连接成功后和可以在设备运行状态下看到上传的温度数据

bad8af1f5f8ab29423b767426d8d5261b2490592

demo中做了一个温度递增的上传,以下是数据记录:

1efed9107b0c5b3a6e1c579d12a76fed099b9e84

做的过程中参考了一下链接,放在这里,读者可以阅读,以获得更多细节:

子设备接入

https://help.aliyun.com/document_detail/66641.html

ESP8266 and MicroPython - Part 2

https://www.home-assistant.io/blog/2016/08/31/esp8266-and-micropython-part2/

使用MQTT客户端连接阿里云MQTT服务器

https://yq.aliyun.com/articles/592279

使用Python模拟设备接入阿里云物联网的MQTT服务器

https://yq.aliyun.com/articles/162978


关于本问题的更多回答可点击原文查看:https://developer.aliyun.com/ask/282972?spm=5176.28261954.J_7341193060.518.40c22f3d058OAB&scm=20140722.S_community@@%E9%97%AE%E7%AD%94@@282972._.ID_282972-RL_mqtt%E5%8D%8F%E8%AE%AE-LOC_search~UND~community~UND~item-OR_ser-V_3-P0_33


问题七:用MQTT协议接收消息时乱码


最近在用阿里的MQ收发消息,两边的项目都是UTF-8的,发送成功的消息,在控制台下载看了是正常。接收时中文就乱码了,请问一下是怎么回事?


参考回答:

是否显示问题,可以先把字节流打印出来比较一下,理论上都是字节流传输,MQTT和MQ的body是对应的,没有特殊转换处理


关于本问题的更多回答可点击原文查看:https://developer.aliyun.com/ask/86129?spm=5176.28261954.J_7341193060.525.40c22f3d058OAB&scm=20140722.S_community@@%E9%97%AE%E7%AD%94@@86129._.ID_86129-RL_mqtt%E5%8D%8F%E8%AE%AE-LOC_search~UND~community~UND~item-OR_ser-V_3-P0_34

相关实践学习
阿里云AIoT物联网开发实战
本课程将由物联网专家带你熟悉阿里云AIoT物联网领域全套云产品,7天轻松搭建基于Arduino的端到端物联网场景应用。 开始学习前,请先开通下方两个云产品,让学习更流畅: IoT物联网平台:https://iot.console.aliyun.com/ LinkWAN物联网络管理平台:https://linkwan.console.aliyun.com/service-open
相关文章
|
7月前
|
消息中间件 安全 物联网
海量接入、毫秒响应:易易互联基于 Apache RocketMQ + MQTT 构筑高可用物联网消息中枢
易易互联科技有限公司是吉利集团旗下专注于换电生态的全资子公司,致力于打造安全、便捷、便宜的智能换电网络。公司依托吉利GBRC换电平台,基于电池共享与车辆全生命周期运营,已布局超470座换电站,覆盖40多个城市,计划2027年达2000座。面对海量设备高并发连接、高实时性要求及数据洪峰挑战,易易互联采用阿里云MQTT与RocketMQ构建高效物联网通信架构,实现稳定接入、低延迟通信与弹性处理,全面支撑其全国换电网络规模化运营与智能化升级。
432 1
海量接入、毫秒响应:易易互联基于 Apache RocketMQ + MQTT 构筑高可用物联网消息中枢
|
11月前
|
物联网
(手把手)在华为云、阿里云搭建自己的物联网MQTT消息服务器,免费IOT平台
本文介绍如何在阿里云搭建自己的物联网MQTT消息服务器,并使用 “MQTT客户端调试工具”模拟MQTT设备,接入平台进行消息收发。
3366 42
|
11月前
|
物联网
如何在腾讯云等平台搭建自己的物联网MQTT服务器Broker
物联网技术及MQTT协议被广泛应用于各种场景。本文介绍物联网MQTT服务助手下载,如何搭建自己的物联网平台,并使用 “MQTT客户端调试工具”模拟MQTT设备,接入平台进行消息收发。
782 37
|
11月前
|
存储 数据库 Python
使用HTTP POST协议将本地压缩数据发送到服务器
总的来说,使用HTTP POST协议将本地压缩数据发送到服务器是一个涉及多个步骤的过程,包括创建压缩文件,设置HTTP客户端,发送POST请求,以及服务器端的处理。虽然这个过程可能看起来复杂,但一旦你理解了每个步骤,就会变得相对简单。
383 19
|
9月前
|
消息中间件 数据管理 Serverless
阿里云消息队列 Apache RocketMQ 创新论文入选顶会 ACM FSE 2025
阿里云消息团队基于 Apache RocketMQ 构建 Serverless 消息系统,适配多种主流消息协议(如 RabbitMQ、MQTT 和 Kafka),成功解决了传统中间件在可伸缩性、成本及元数据管理等方面的难题,并据此实现 ApsaraMQ 全系列产品 Serverless 化,助力企业提效降本。
|
7月前
|
消息中间件 Java Kafka
消息队列比较:Spring 微服务中的 Kafka 与 RabbitMQ
本文深入解析了 Kafka 和 RabbitMQ 两大主流消息队列在 Spring 微服务中的应用与对比。内容涵盖消息队列的基本原理、Kafka 与 RabbitMQ 的核心概念、各自优势及典型用例,并结合 Spring 生态的集成方式,帮助开发者根据实际需求选择合适的消息中间件,提升系统解耦、可扩展性与可靠性。
480 1
消息队列比较:Spring 微服务中的 Kafka 与 RabbitMQ
|
消息中间件 JSON Java
开发者如何使用轻量消息队列MNS
【10月更文挑战第19天】开发者如何使用轻量消息队列MNS
1011 93
|
消息中间件 安全 Java
云消息队列RabbitMQ实践解决方案评测
一文带你详细了解云消息队列RabbitMQ实践的解决方案优与劣
488 104
|
消息中间件 存储 Kafka
MQ 消息队列核心原理,12 条最全面总结!
本文总结了消息队列的12个核心原理,涵盖消息顺序性、ACK机制、持久化及高可用性等内容。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
|
消息中间件
解决方案 | 云消息队列RabbitMQ实践获奖名单公布!
云消息队列RabbitMQ实践获奖名单公布!
265 1

相关产品

  • 物联网平台