MQTT连接ONENET——登录

ONENET:MQTT服务器和端口号:183.230.40.39 6002
在ONENET平台创建一个多协议接入平台的设备
在这里插入图片描述
接入需要三个参数:
设备ID:602906218
产品ID:352202
APIKEY:KFBKEY
其中APIKEY是自定义的
在这里插入图片描述
在这里插入图片描述
新创建的设备是可以自定义的,这里以KFBKEY为例

使用网络调试助手进行调试:(连接MQTT的服务器和端口)
在这里插入图片描述
MQTT的数据报包括三部分:固定头+可变头+负载(也就是数据)
在这里插入图片描述

固定头:
在这里插入图片描述
第一个字节的值是访问类型:
该版本支持的所有类型:
在这里插入图片描述
第2-5个字节是指这个数据报的长度(除固定头):也即是可变头+负载
先不设置,等后面设置完在设置
那么现在连接服务器的固定头即为:0x10 ??(待定)
可变头:
在这里插入图片描述
第1、2个字节值固定:0x00 0x04
3-6:为“MQTT”也就是:0x4D 0x51 0x54 0x54
第7个字节值固定:0x04(表中应该是错了,后面对第7个字节描述说:版本必须设置为4,平台只支持版本v 3.1.1,不支持更老的版本。使用第三方客户端时需要注意选择正确的版本。)
第8个字节:(我设置为0xC2)
Will flag与Willretainflag/WillQosFlag
Will flag为0时,WillQosFlag和WillRetainFlag必须为0,Will Flag为1时,WillQosFlag只能为0、1、2。
注:1.当该设备下一次正常上线后,服务器会清除之前的will 消息(包括retain消息)。
2.如果设备上线时设置了Will Topic和msg,且将WillRetainFlag设置为1,只有设备异常断开后,服务器才会将该Will msg分发给新的Will Topic的订阅者,且Qos级别以订阅的Request qos级别为准。
3.如果设备上线时设置了Will Topic和msg,且将WillRetainFlag设置为0,服务器不会存储该消息,当设备异常断开后会将该Will msg以设备设置的WillQosFlag的Qos级别进行分发。
CleanSessionFlag
若客户端将clean session标志位设置为0,当其断开后,平台将会保存session,session需保持的内容包含:
 客户端订阅的topic列表。
 还未完成确认的Qos1、Qos2级别的publish消息

客户端保存session的内容包含:
 已经发送到服务端的但还没有收到确认的Qos1、Qos2消息列表。
 待发送的Qos0列表。
若客户端将clean session标志位设置为1,当其断开后,平台会清除设备的订阅列表及未完成确认的Qos1、Qos2的publish消息。
Reserve
保留位,置0。
第9-10个字节:(时间)0x00 0x78
这里设置120秒也就是0x78

负载:
设置与鉴权相关的字段包含client id,username和password,支持鉴权方式。

方式1:设备ID、项目ID、auth_info
字段设置 消息示例
client_id设置为平台创建设备时的设备id
username设置为“项目ID”
password设置为“鉴权信息(auth_info)” client_id=”123”
username=”433223”
password=”注册的鉴权信息”
各字段说明如下:
鉴权信息(auth_info):在平台申请设备时填写设备的auth_info属性(数字+字母的字符串),该属性需要产品内具备唯一性;

方式2:设备ID + APIKey(项目ID也需要填写)
字段设置 消息示例
client_id设置为平台创建设备时的设备id
username设置为“项目ID”
password设置为“鉴权信息(auth_info)” client_id=”123”
username=”433223”
password=Api Key

项目ID:在平台添加项目时平台生成的ID
APIKey:在平台上创建产品时生成的APIKey.

这里采用方式2,我嫌方式1麻烦,但是方式1安全

设备ID:602906218
产品ID:352202
APIKEY:KFBKEY
利用网络调试助手将字符串转成十六进制:
在这里插入图片描述
然后点HEX
在这里插入图片描述
602906218=0x36 0x30 0x32 0x39 0x30 0x36 0x32 0x31 0x38
352202=0x33 0x35 0x32 0x32 0x30 0x32
KFBKEY=0x4B 0x46 0x42 0x4B 0x45 0x59

在这里插入图片描述
格式为:
2字节字串长度 + utf8字串
602906218也即是:
0x00 0x09 0x36 0x30 0x32 0x39 0x30 0x36 0x32 0x31 0x38
< 长度 > < 数据 >
以此类推:
负载部分为:
00 09 36 30 32 39 30 36 32 31 38 00 06 33 35 32 32 30 32 00 06 4B 46 42 4B 45 59
|------------------------------------------- | |-------------------------------| |-------------------------------|

/*综上所述
固定头:10 ??
可变头:00 04 4D 51 54 54 04 C2 00 78
负载:00 09 36 30 32 39 30 36 32 31 38 00 06 33 35 32 32 30 32 00 06 4B 46 42 4B 45 59
*/
/*??=可变头长度+负载长度=0x25*/
//于是,用于连接服务器所发送的数据报为:
10 25 00 04 4D 51 54 54 04 C2 00 78 00 09 36 30 32 39 30 36 32 31 38 00 06 33 35 32 32 30 32 00 06 4B 46 42 4B 45 59

在这里插入图片描述

服务器返回:
20 02 01 00
20:服务器返回类型编号
在这里插入图片描述
02:长度
01:session信息在服务器已保持
在这里插入图片描述
00:成功
在这里插入图片描述

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: ESP8266可以通过MQTT协议连接OneNet平台。具体步骤如下: 1. 注册OneNet账号并创建设备,获取设备ID和API Key。 2. 下载并安装Arduino IDE,安装ESP8266开发板支持。 3. 在Arduino IDE中安装PubSubClient库,该库可以实现ESP8266与MQTT服务器的通信。 4. 编写ESP8266的程序,包括WiFi连接MQTT连接部分。在MQTT连接部分,需要设置MQTT服务器地址、端口号、设备ID和API Key等参数。 5. 将程序上传到ESP8266开发板中,启动设备并连接到WiFi网络。 6. 在OneNet平台上创建数据流,并将数据流与设备关联。 7. 在ESP8266的程序中,通过PubSubClient库实现数据的发布和订阅,将设备采集的数据发送到OneNet平台。 以上是ESP8266通过MQTT连接OneNet平台的基本步骤,具体实现过程需要根据具体情况进行调整。 ### 回答2: ESP8266是一款资源占用较少、平台支持丰富的物联网芯片,而MQTT是一种轻量级的通信协议,被广泛应用于物联网领域。OneNet是中国移动物联网推出的云平台服务,提供物联网数据存储、应用管理等功能。在实际应用中,如何通过MQTT连接ESP8266和OneNet是非常重要的。 首先,需要在OneNet平台上创建设备和数据流。具体步骤如下: 1. 登录OneNet平台,点击“创建产品”; 2. 输入产品名称、编码、设备数量等信息,点击“下一步”; 3. 在设备信息页面,填写设备名称、描述信息、设备类型等,点击“下一步”; 4. 在数据流信息页面,填写数据流名称、数据类型、单位等,点击“创建产品”。 接下来,需要使用MQTT协议连接OneNet平台和ESP8266。具体步骤如下: 1. 安装MQTT客户端,例如Eclipse Paho MQTT客户端; 2. 在ESP8266编写程序,包括WIFI连接MQTT连接两部分。WIFI连接可使用ESP8266 Wi-Fi库实现,MQTT连接可使用PubSubClient库实现(通过Arduino IDE添加库); 3. 在程序中,需要填写OneNet平台的设备CCID、MQTT地址、端口、设备Token等信息; 4. ESP8266通过MQTT协议与OneNet平台建立连接,可以发布数据流或订阅数据流等操作。 总体来说,ESP8266通过MQTT连接OneNet平台需要以下步骤:创建OneNet设备和数据流、使用MQTT客户端连接OneNet平台、在程序中填写必要信息、建立连接并实现数据传输。在实际应用中,需要根据需求不断优化代码并进行测试。 ### 回答3: ESP8266是一款极具性价比的物联网芯片,它的开发板价格低廉,拥有丰富的GPIO和ADC输入输出口,可以与各种传感器和执行器进行交互。而MQTT作为一种轻量级的物联网协议,其传输数据的效率高、占用的带宽少,在物联网应用中得到了广泛的应用。而OneNet云平台则提供了云端数据存储与管理、远程控制等服务,是物联网开发的重要工具之一。 将ESP8266与OneNet云平台结合起来,可以实现各种智能化的控制和响应,例如远程控制家中的灯光、监控室内温湿度等。 实现ESP8266通过MQTT连接OneNet云平台主要分为以下几个步骤: 1.注册OneNet账号、创建设备和数据流 在OneNet账号中创建设备,拥有特定的设备ID和API Key。同时,需要在设备中创建对应的数据流,例如温度、湿度等,将来ESP8266采集的数据会通过MQTT协议传输到这些数据流中。 2.配置ESP8266开发板 需要先将ESP8266与电脑连接,配置Wi-Fi和Arduino IDE环境,下载并导入MQTT库等工作。这些步骤可以参考ESP8266的官方文档或者开发者社区中的资料。 3.实现MQTT传输协议 在ESP8266中可以利用MQTT库实现数据的传输,该库提供了MQTT协议的相关接口函数,例如连接OneNet平台、订阅和发布数据流、解析回调函数等。需要在代码中填写OneNet平台分配的设备ID、API Key和数据流等信息。 4.测试与调试 在ESP8266和OneNet平台完成MQTT连接和数据传输后,可以通过OneNet控制台观察数据流的变化,验证ESP8266的数据采集和传输功能是否正常。如果有问题,需要检查代码中的配置信息、MQTT协议的回调函数等。 同时,为了节约电量和延长ESP8266的寿命,可以采用低功耗模式、深度睡眠模式等技术来优化ESP8266的电源管理。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值