IoT裏面是根據『產品』對所有智能設備分類的。比如說智能檯燈A是一個產品,智能插座B是另一個產品。每個產品根據productKey來區分。一個產品裏面有很多臺設備,每個設備都有一個deviceName和deviceSecret與之對應。通常把這三者聯合起來稱作三元組信息。
1. 三元組
阿里物聯網平臺的連接註冊也需要用到“三元組”:
- ProductKey
- DeviceName
- DeviceSecret
這個三元組並不是直接拿來用的,而是需要按照官方設定的協議規則得到UserName、PassWord、ClientID、IP這幾個參數,規則就是:
參數 | 阿里雲物聯網平臺參數 |
---|---|
UserName | {DeviceName}&{ProductKey} |
PassWord | 通過下面的算法獲取 |
ClientID | {隨便定}|securemode=3,signmethod=hmacsha1,timestamp=789| |
IP | {ProductKey}.iot-as-mqtt.cn-shanghai.aliyuncs.com |
PassWord生成:
一般來說,hmac_sha1進行編碼時會有兩個參數:Key和value。
- Key對應三元組中的:DeviceSecret
- value就要複雜一點(XXXX,替換成實際的值):clientIdXXXXdeviceNameXXXXproductKeyXXXXXXtimestamp789
2. 用在哪?
2.1 MQTT協議用到的
MQTT3.1.1協議中CONNECT 報文的有效載荷(payload) 包含一個或多個以長度爲前綴的字段,可變報頭中的標誌決定是否包含這些字段。 如果包含的話, 必須按這個順序出現:客戶端標識符, 遺囑主題, 遺囑消息, 用戶名, 密
碼。
例如通過mqtt協議連接阿里雲,連接函數可以定義成如下,這裏入口參數就用到了上面的三個參數,客戶端標識符、 用戶名、 密碼。
uint8_t mqtt_connect(char *ClientID,char *Username,char *Password)
函數的中入口參數具體如何使用按照協議規定來就好。
2.2 wifi模塊等連網設備用到的
會用到ip地址,例如esp8266在使用AT指令連接服務器時,AT+CIPSTART,就會用到服務器的IP地址。