zoukankan      html  css  js  c++  java
  • 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:成功
    在这里插入图片描述

  • 相关阅读:
    数据库悲观锁与乐观锁
    windows消息大全
    Ubuntu 16.04 LTS GNOME版本下载
    Spring MVC-表单(Form)处理示例(转载实践)
    Spring MVC-Hello World示例(转载实践)
    Spring MVC-环境设置(转载实践)
    MyBatis在注解上使用动态SQL(@select使用if)
    Ubuntu 16.04安装Ubuntu After Install工具实现常用软件批量安装
    Ubuntu 16.04开机自动挂载硬盘分区(转)
    Spring MVC-概述(转载实践)
  • 原文地址:https://www.cnblogs.com/hhsxy/p/14018400.html
Copyright © 2011-2022 走看看