物联网平台支持设备使用 MQTT 协议接入,MQTT 是基于 TCP/IP 协议栈构建的异步通信消息协议,是一种轻量级的发布、订阅信息传输协议。MQTT 在时间和空间上,将消息发送者与接受者分离,可以在不可靠的网络环境中进行扩展,适用于设备硬件存储空间有限或网络带宽有限的场景。 安服优物联云支持标准的 mqtt 3.1.1,请参阅 mqtt 协议规范

连接前准备

设备接入前,需要明确设备接入到哪个产品下,如果还未创建产品,请先在安服优物联云创建产品,获取对应的 productKey 设备接入时需要对应设备的 deviceName、secret,设备需要提前在平台进行注册

mqtt 接入域名

mqtt.afuiot.com,端口号:1883

设备鉴权

在设备接入时,安服优物联云主要使用所接入产品的 productKey、设备的 deviceName 和设备的 deviceSecret 进行鉴权。
mqtt连接需要三个参数分别为:clientId、username和password。
我们用如下方法生成这三个参数。

参数 生成规则
clientId 格式:deviceName_productKey
username 格式:deviceName+”/“+productKey。
password 格式:hmac_sha1(clientId/deviceName/productKey,deviceSecret)。其中clientId是写死的

假如某设备三元组值如下:
productKey = aCiwDdevvb
deviceName = lamp001
deviceSecret = 160463456787239XtuZXXCcc0b
则 mqtt 参数值为:

参数
clientId lamp001_aCiwDdevvb
username lamp001/aCiwDdevvb
password hmac_sha1(“clientId”+ “
lamp001/aCiwDdevvb”,”160463456787239XtuZXXCcc0b”)。

password 生成示例方法 hmacsha1
`public static String hmac_sha1(String encryptText, String encryptKey) throws Exception {
byte[] text = encryptText.getBytes(_CHARSET_UTF8
);
byte[] keyData = encryptKey.getBytes(CHARSET_UTF8);

  1. SecretKeySpec secretKey = new SecretKeySpec(keyData, _KEY_MAC_SHA1_);<br /> Mac mac = Mac._getInstance_(secretKey.getAlgorithm());<br /> mac.init(secretKey);<br /> return _byte2hex_(mac.doFinal(text));<br />}<br />public static String byte2hex(byte[] b)<br />{<br /> StringBuilder hs = new StringBuilder();<br /> String stmp;<br /> for (int n = 0; b!=null && n < b.length; n++) {<br /> stmp = Integer._toHexString_(b[n] & 0XFF);<br /> if (stmp.length() == 1)<br /> hs.append('0');<br /> hs.append(stmp);<br /> }<br /> return hs.toString().toUpperCase();<br />}`

使用 MQTT.fx 接入

操作步骤: 1.下载并安装 MQTT.fx 软件。 MQTT.fx 下载地址 2.打开 MQTT.fx 软件,单击设置图标 3.设置连接参数

参数 说明
Profile Name 输入您的自定义名称
Profile Type 选择为 MQTT Broker
Broker Address mqtt.afuiot.com
Broker Port 设置为 1883
Client ID 客户端 ID,详情参考设备鉴权中的 clientId。
General General 栏目下的设置项可保持系统默认,也可以根据您的具体需求设置

4.单击 User Credentials,设置 Username 和 Password
image.png

参数 说明
User Name 填写登录用户名,格式 deviceName/productKey
Password 登录密码详情参考设备鉴权中的 password

5.设置完成后,单击 Connect 进行连接
6.发布消息,测试上行通信