資源簡介
ESP8266(arduino)連接阿里云物聯網平臺,ESP8266作為主控,可上報固件版本

代碼片段和文件信息
/*
??Aliyun_mqtt.h?-?Library?for?connect?to?Aliyun?MQTT?server.
*/
#include?“aliyun_mqtt.h“
#include?
#define?MQTT_PORT?1883
#define?SHA256HMAC_SIZE?32
//?Verify?tool:?http://tool.oschina.net/encrypt?type=2
static?String?hmac256(const?String?&signcontent?const?String?&ds)
{
??byte?hashCode[SHA256HMAC_SIZE];
??SHA256?sha256;
??const?char?*key?=?ds.c_str();
??size_t?keySize?=?ds.length();
??sha256.resetHMAC(key?keySize);
??sha256.update((const?byte?*)signcontent.c_str()?signcontent.length());
??sha256.finalizeHMAC(key?keySize?hashCode?sizeof(hashCode));
??String?sign?=?““;
??for?(byte?i?=?0;?i???{
????sign?+=?“0123456789ABCDEF“[hashCode[i]?>>?4];
????sign?+=?“0123456789ABCDEF“[hashCode[i]?&?0xf];
??}
??return?sign;
}
static?String?mqttBroker;
static?String?mqttClientID;
static?String?mqttUserName;
static?String?mqttPassword;
//?call?this?function?once
void?mqtt_prepare(const?char?*timestampconst?char?*productKey?const?char?*deviceNameconst?char?*deviceSecretconst?char?*region)
{
??mqttBroker?=?productKey;
??mqttBroker?+=?“.iot-as-mqtt.“;
??mqttBroker?+=?String(region);
??mqttBroker?+=?“.aliyuncs.com“;
??
??//?Serial.println(mqttBroker);
??mqttUserName?=?deviceName;
??mqttUserName?+=?‘&‘;
??mqttUserName?+=?productKey;
???//Serial.println(mqttUserName);
???
??mqttClientID?=?deviceName;?//?device?name?used?as?client?ID
??mqttClientID?+=?“|securemode=3signmethod=hmacsha256timestamp=“;
??mqttClientID?+=?timestamp;
??mqttClientID?+=?‘|‘;
???//Serial.println(mqttClientID);
}
bool?connect_aliyun_mqtt_With_password(PubSubClient?&mqttClient?const?char?*password)
{
??mqttClient.setServer(mqttBroker.c_str()?MQTT_PORT);
??byte?mqttConnectTryCnt?=?5;
??while?(!mqttClient.connected()?&&?mqttConnectTryCnt?>?0)
??{
????Serial.println(“Connecting?to?MQTT?Server?...“);
????if?(mqttClient.connect(mqttClientID.c_str()?mqttUserName.c_str()?password))
????{
??????//?Serial.println(“MQTT?Connected!“);
??????return?true;
????}
????else
????{
??????byte?errCode?=?mqttClient.state();
??????Serial.print(“MQTT?connect?failed?error?code:“);
??????Serial.println(errCode);
??????if?(errCode?==?MQTT_CONNECT_BAD_PROTOCOL?||?errCode?==?MQTT_CONNECT_BAD_CLIENT_ID?||?errCode?==?MQTT_CONNECT_BAD_CREDENTIALS?||?errCode?==?MQTT_CONNECT_UNAUTHORIZED)
??????{
????????Serial.println(“No?need?to?try?again.“);
????????break;?//?No?need?to?try?again?for?these?situation
??????}
??????delay(3000);
????}
????mqttConnectTryCnt?-=?1;
??}
??return?false;
}
bool?connect_aliyun_mqtt(
????PubSubClient?&mqttClient
????const?char?*productKey
????const?char?*deviceName
????const?char?*deviceSecret
????const?char?*region)
{
??String?timestamp?=?String(millis());
??mqtt_prepare(timestamp.c_str()?productKey?deviceName?deviceSecret?region);
??//?Generate?MQTT?Password?use?deviceName?as?clientID
??String?signcontent?=?“clientId“;
??signcontent?+=?deviceName;
??signcontent?+=?“deviceName“;
??signcontent?+=?deviceName;
??signcontent?+=?
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2019-03-21?12:11??esp8266alinyun\
?????目錄???????????0??2019-03-21?12:11??esp8266alinyun\_temp_by_dltool\
?????目錄???????????0??2019-03-21?12:11??esp8266alinyun\_temp_by_dltool\downloadPanel1\
?????文件??????303072??2019-03-20?20:42??esp8266alinyun\_temp_by_dltool\downloadPanel1\esp8266.ino.generic.bin_rep
?????文件??????302832??2019-03-18?21:57??esp8266alinyun\_temp_by_dltool\downloadPanel1\esp8266.ino.nodemcu.bin_rep
?????文件????????3422??2019-03-20?20:01??esp8266alinyun\aliyun_mqtt.cpp
?????文件????????2444??2019-03-20?17:38??esp8266alinyun\aliyun_mqtt.h
?????文件????????4278??2019-03-21?12:11??esp8266alinyun\esp8266.ino
?????文件??????303072??2019-03-20?20:42??esp8266alinyun\esp8266.ino.generic.bin
?????文件??????302832??2019-03-19?19:49??esp8266alinyun\esp8266.ino.nodemcu.bin
評論
共有 條評論