MQTT.fx进行设备接入:MQTT客户端1.7.1下载
一、生成token
使用MQTT.fx进行设备接入,生成token需要用到产品ID
、设备名称
和设备key
1、产品概况中的产品ID
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 Address | Broker Port | Client ID | User Name | Password | 说明 |
---|---|---|---|---|---|
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:8883
或mqttstls.heclouds.com:8883
,才需要进行SSL/TLS加密设置
下载证书:证书地址 官方文档证书位置
选择CA certificate file,导入解压后的证书
三、设备连接
点击配置文件选择箭头,选择配置MQTTS设备接入
点击Connect,进行设备接入,右上角有个绿色的球,连接成功
此时onenet平台控制台中设备处于 “在线” 状态
这样就连接成功了
相关推荐: ThingsKit物联网平台v1.0.0 Release版本发布
点击上方 蓝色 字体关注我们 ThingsKit版本说明 ThingsKit v1.0.0 Release版本在v1.0.0 RC版本基础上新增了很多实用的新功能,底层框架也做了更好的优化,请已购买平台的客户,及时联系客服获取最新版本。 演示:https://…