物联网平台支持设备使用 MQTT 协议接入,MQTT 是基于 TCP/IP 协议栈构建的异步通信消息协议,是一种轻量级的发布、订阅信息传输协议。MQTT 在时间和空间上,将消息发送者与接受者分离,可以在不可靠的网络环境中进行扩展,适用于设备硬件存储空间有限或网络带宽有限的场景。 安服优物联云支持标准的 mqtt 3.1.1,请参阅 mqtt 协议规范
连接前准备
设备接入前,需要明确设备接入到哪个产品下,如果还未创建产品,请先在安服优物联云创建产品,获取对应的 productKey 设备接入时需要对应设备的 deviceName、secret,设备需要提前在平台进行注册
mqtt 接入域名
设备鉴权
在设备接入时,安服优物联云主要使用所接入产品的 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);
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
参数 | 说明 |
---|---|
User Name | 填写登录用户名,格式 deviceName/productKey |
Password | 登录密码详情参考设备鉴权中的 password |
5.设置完成后,单击 Connect 进行连接
6.发布消息,测试上行通信