我是靠谱客的博主 无情睫毛膏,最近开发中收集的这篇文章主要介绍OneNET物联网平台02 使用MQTT.fx模拟MQTTS产品设备连接到平台,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

MQTT.fx进行设备接入:MQTT客户端1.7.1下载

一、生成token

使用MQTT.fx进行设备接入,生成token需要用到产品ID设备名称和设备key

1、产品概况中的产品ID

image-20211217111946818

2、设备列表中的设备名称

3、设备详情中的key

4、生成token

根据这些信息来生成token,生成token的java代码如下:

import javax.crypto.Mac;
import javax.crypto.spec.SecretKeySpec;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;
import java.util.Base64;

public class TokenUtils {

    public static String assembleToken(String version, String resourceName, String expirationTime,
                                       String signatureMethod, String accessKey)
            throws UnsupportedEncodingException, NoSuchAlgorithmException, InvalidKeyException {
        StringBuilder sb = new StringBuilder();
        String res = URLEncoder.encode(resourceName, "UTF-8");
        String sig = URLEncoder.encode(generatorSignature(version, resourceName, expirationTime
                , accessKey, signatureMethod), "UTF-8");
        sb.append("version=")
                .append(version)
                .append("&res=")
                .append(res)
                .append("&et=")
                .append(expirationTime)
                .append("&method=")
                .append(signatureMethod)
                .append("&sign=")
                .append(sig);
        return sb.toString();
    }

    public static String generatorSignature(String version, String resourceName, String expirationTime,
                                            String accessKey, String signatureMethod) throws NoSuchAlgorithmException,
            InvalidKeyException {
        String encryptText = expirationTime + "n" + signatureMethod + "n" + resourceName + "n" + version;
        String signature;
        byte[] bytes = HmacEncrypt(encryptText, accessKey, signatureMethod);
        signature = Base64.getEncoder().encodeToString(bytes);
        return signature;
    }

    public static byte[] HmacEncrypt(String data, String key, String signatureMethod)
            throws NoSuchAlgorithmException, InvalidKeyException {
        //根据给定的字节数组构造一个密钥,第二参数指定一个密钥算法的名称
        SecretKeySpec signinKey = null;
        signinKey = new SecretKeySpec(Base64.getDecoder().decode(key),
                "Hmac" + signatureMethod.toUpperCase());

        //生成一个指定 Mac 算法 的 Mac 对象
        Mac mac = null;
        mac = Mac.getInstance("Hmac" + signatureMethod.toUpperCase());

        //用给定密钥初始化 Mac 对象
        mac.init(signinKey);

        //完成 Mac 操作
        return mac.doFinal(data.getBytes());
    }

    public enum SignatureMethod {
        SHA1, MD5, SHA256;
    }

    public static void main(String[] args) throws UnsupportedEncodingException, NoSuchAlgorithmException, InvalidKeyException {
        // 参数组版本号,目前仅支持"2018-10-31"
        String version = "2018-10-31";
        // 产品id
        String productId = "480701";
        // 设备名称
        String deviceName = "yuyun-test";
        // 设备key
        String accessKey = "jZLOJzdXrR091nb6+V5KersX2U0JkNlCrR/0ezhzKyA=";

        String resourceName = String.format("products/%s/devices/%s", productId, deviceName);
        String expirationTime = System.currentTimeMillis() / 1000 + 100 * 24 * 60 * 60 + "";
        String signatureMethod = SignatureMethod.SHA1.name().toLowerCase();
        String token = assembleToken(version, resourceName, expirationTime, signatureMethod, accessKey);
        System.out.println("Authorization:" + token);
    }
}

运行后生成的token:

version=2018-10-31&res=products%2F480701%2Fdevices%2Fyuyun-test&et=1648354863&method=sha1&sign=Nyg9dc6wLOfp4WdProtID68jlL0%3D

二、MQTT.fx客户端配置

打开客户端

1、配置参数

Broker AddressBroker PortClient IDUser NamePassword说明
183.230.40.16
mqttstls.heclouds.com
8883设备名称产品ID前面生成的token加密接口
183.230.40.96
mqtts.heclouds.com
1883设备名称产品ID前面生成的token非加密接口

如图:

2、SSL/TLS加密设置

如果连接的地址是:183.230.40.16:8883mqttstls.heclouds.com:8883,才需要进行SSL/TLS加密设置

下载证书:证书地址 官方文档证书位置

选择CA certificate file,导入解压后的证书

三、设备连接

点击配置文件选择箭头,选择配置MQTTS设备接入

点击Connect,进行设备接入,右上角有个绿色的球,连接成功

此时onenet平台控制台中设备处于 “在线” 状态


这样就连接成功了

最后

以上就是无情睫毛膏为你收集整理的OneNET物联网平台02 使用MQTT.fx模拟MQTTS产品设备连接到平台的全部内容,希望文章能够帮你解决OneNET物联网平台02 使用MQTT.fx模拟MQTTS产品设备连接到平台所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(48)

评论列表共有 0 条评论

立即
投稿
返回
顶部