1. 创建设备。
点击“查看设备”,点击“前往管理”点击添加设备
从平台上获取相关的信息:
ProductKey:a1BekCto7zj
主机,端口:a1BekCto7zj.iot-as-mqtt.cn-shanghai.aliyuncs.com:1883
DeviceName:Norra_Device_000001
DeviceSecret:OQzK9z8XoWrnH9LeeO4kIMFHk1WEu5ov
clientID:自己随意定义为12345
timestamp:自己随意定义为10,给上发的消息打上标识
参考Ref[3],获取相关信息:
规则:
mqttClientId: 12345+"|securemode=3,signmethod=hmacsha1,timestamp=10|"
例子:
"12345|securemode=3,signmethod=hmacsha1,timestamp=10|”
规则:
mqttUsername: deviceName+"&"+productKey
例子:
"Norra_Device_000001&a1BekCto7zj"
规则:
mqttPassword: sign_hmac(deviceSecret,content)sign签名需要把以下参数按字典序排序后,再根据signmethod加签。
举例:password=hmacsha1("secret","clientId12345deviceNamedeviceproductKeypktimestamp789").toHexString(); //最后是二进制转16制字符串,大小写不敏感。 这个例子结果为FAFD82A3D602B37FB0FA8B7892F24A477F851A14
hmacsha1工具:http://tool.oschina.net/encrypt?type=2
例子:
clientId12345deviceNameNorra_Device_000001productKeya1BekCto7zjtimestamp10
的密码:
72770e19f50540d4a17b376808630ecd5c9a0fc9
最终生成Mqtt connect内容:
10 8b 01 00 04 4d 51 54 54 04 C2 00 78 00 34 31 32 33 34 35 7C 73 65 63 75 72 65 6D 6F 64 65 3D 33 2C 73 69 67 6E 6D 65 74 68 6F 64 3D 68 6D 61 63 73 68 61 31 2C 74 69 6D 65 73 74 61 6D 70 3D 31 30 7C 00 1F 4E 6F 72 72 61 5F 44 65 76 69 63 65 5F 30 30 30 30 30 31 26 61 31 42 65 6B 43 74 6F 37 7A 6A 00 28 37 32 37 37 30 65 31 39 66 35 30 35 34 30 64 34 61 31 37 62 33 37 36 38 30 38 36 33 30 65 63 64 35 63 39 61 30 66 63 39
注意红色字体:
1. 第二个字节有关的Remaining Length field需要特别注意,容易弄错。
2. Playload里面的每个子项都由长度开头。
使用python连接阿里云IoT,参考Ref[4]:
使用Wireshark监测通信和MQTT协议,参考Ref[2]:
结果:
Ref[1]. http://docs.oasis-open.org/mqtt/mqtt/v3.1.1/os/mqtt-v3.1.1-os.pdf
Ref[2].【MQTT】使用Wireshark分析MQTT协议 - CSDN博客.pdfhttps://blog.csdn.net/yannanxiu/article/details/71310723
Ref[3]. MQTT-TCP连接通信_设备多协议连接_设备开发指南_阿里云物联网套件-阿里云.pdfhttps://help.aliyun.com/document_detail/30539.html?spm=a2c4g.11186623.6.592.fukmCQ
Ref[4]. 【Python】使用Python模拟设备接入阿里云物联网的MQTT服务器 - CSDN博客.pdfhttps://blog.csdn.net/yannanxiu/article/details/77185796