1. 创建设备。
![e6a74c0330b8a9f9cc3afb19abe639a147d588a9]()
![8d4b67c117d228e855761da31999e9fab77652ab]()
![0ac48e66efb69991e069fd054c814f5d28abb92f]()
![717d0f1f698a2dad7ae3423eacec26a7e179efea]()
点击“查看设备”,点击“前往管理”点击添加设备
![8b3b8d2c2ac2b694e551339cd2abe55a9c412605]()
![9920858dee891735300a387666f66d0af0fa0335]()
从平台上获取相关的信息:
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
![7599a61f53c46d667a892e168030e7137d70c8b3]()
最终生成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]:
![83e4881ed4679ec3c87b87e8d52db39f5616eef4]()
使用Wireshark监测通信和MQTT协议,参考Ref[2]:
![3f0a518b8ab6c08414b2b1093f53383c904d2b6a]()
结果:
![90c53adc7d37483bbec538f4e9241b8473c6bbdc]()
![de60d0094ae0f5dc339a928b31d0607567ac8457]()
![9e492b6c4a34dbc03a7741f755606b5e0c189382]()
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