Esp8266 D1 Mini連接阿里云IOT

這幾天沒事看到我還有Esp8266在哪里吃灰戒洼,想著馬上5G了也得搞搞IOT是吧,然后翻閱些資料自己整理下防止以后忘了哈哈······

這里我主要做了一個連接訂閱阿里IOT而已,主要是手上也就一個8266板子然后啥都沒有,過幾天買些硬件在數(shù)據(jù)上傳和發(fā)布數(shù)據(jù)。

廢話不多說先上硬件


這是在某寶上買的(好便宜啊)楼咳,買來的時候上面已經(jīng)標注固件已經(jīng)刷了ModeMcu所以我沒刷固件,刷固件教程也不少烛恤,推薦嗶哩嗶哩 哈哈暴露了·····

下來我們先注冊阿里IOT根據(jù)圖示操作

第一次使用的畫應(yīng)該是立即使用好像母怜,這里很簡單注冊認證就好

下來我們創(chuàng)建一個產(chǎn)品,產(chǎn)品定義通俗的來講就是一個有許多功能的設(shè)備缚柏,比如網(wǎng)絡(luò)攝像機(可能有舵機苹熏,攝像頭,紅外線等等····)

我用的8266所以聯(lián)網(wǎng)方式是WIFI,有些設(shè)備是直接通過網(wǎng)關(guān)連接阿里的

然后開始創(chuàng)建設(shè)備轨域,設(shè)備顧名思義就是一臺機器袱耽。產(chǎn)品和設(shè)備就屬于一種一對多關(guān)系,一個產(chǎn)品就會有多個運行的設(shè)備對吧干发,這樣是不是好理解點朱巨。

主要就是選擇對應(yīng)產(chǎn)品;DeviceName如果不想輸入會默認生成枉长,DeviceName就是方便你查看設(shè)備的狀態(tài)冀续,比如你有100臺設(shè)備你想知道某一臺設(shè)備的情況就需要DeviceName去查詢;備注就隨意看你自己需求

創(chuàng)建完成后會生成一條設(shè)備必峰,可以查看MQTT連接所需要的KEY


上面所指的三個信息也是連接最主要的東西了

接下來阿里還是開發(fā)環(huán)境好洪唐,為我們提供了在線編譯器,省去了我們下載IDE配置環(huán)境等一些麻煩的操作



怎么樣感覺是不是很開森

接下來我們創(chuàng)建項目


這里注意下這個ini文件吼蚁,這個文件就是配置項目依賴的配置文件

打開ini配置些依賴凭需,

是不是想問依賴怎么加的?



然后在頁面下方有個build選項點擊會加載所需要的庫


加載完后需要改些參數(shù)桂敛,這個很重要哦功炮,不然會運行失敗的溅潜。

接下來開始編寫代碼术唬,也就是官方提供的實例代碼很簡單沒什么太多改動。

創(chuàng)建main.ino文件滚澜,名字自己隨意沒啥區(qū)別粗仓,粘貼下面代碼填入自己對應(yīng)的參數(shù)

#include <ESP8266WiFi.h>
#include <ArduinoJson.h>
#include <aliyun_mqtt.h>

// Wifi名稱和密碼,你WemosD1Mini上網(wǎng)時需要接入的Wifi賬號和密碼
#define WIFI_SSID "自家WIFI賬號"
#define WIFI_PASSWD "自家WIFI密碼"

// LP的設(shè)備三元組(PK/DN/DS)根據(jù)你云端創(chuàng)建的設(shè)備三碼進行更改
#define PRODUCT_KEY "阿里云ProductKey"
#define DEVICE_NAME "阿里云DeviceName"
#define DEVICE_SECRET "阿里云DeviceSecret"

// Alink協(xié)議格式和Topic定義 這個部分是固定格式不用進行修改
#define ALINK_BODY_FORMAT "{\"id\":\"123\",\"version\":\"1.0\",\"method\":\"%s\",\"params\":%s}"
#define ALINK_TOPIC_PROP_POST "/sys/" PRODUCT_KEY "/" DEVICE_NAME "/thing/event/property/post"
#define ALINK_TOPIC_PROP_POSTRSP "/sys/" PRODUCT_KEY "/" DEVICE_NAME "/thing/event/property/post_reply"
#define ALINK_TOPIC_PROP_SET "/sys/" PRODUCT_KEY "/" DEVICE_NAME "/thing/service/property/set"
#define ALINK_METHOD_PROP_POST "thing.event.property.post"

// 創(chuàng)建WiFiClient實例
WiFiClient espClient;

//創(chuàng)建MqttClient實例
PubSubClient mqttClient(espClient);

//連接Wifi
void initWifi(const char *ssid, const char *password)
{
  WiFi.mode(WIFI_STA);
  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED)
  {
    Serial.println("WiFi does not connect, try again ...");
    delay(3000);
  }

  Serial.println("Wifi is connected.");
  Serial.println("IP address: ");
  Serial.println(WiFi.localIP());
}


 //監(jiān)聽云端下發(fā)的指令
void callback(char *topic, byte *payload, unsigned int length)
{
    Serial.print("Message arrived [");
    Serial.print(topic);
    Serial.print("] ");
    payload[length] = '\0';
    Serial.println((char *)payload);

    if (strstr(topic, ALINK_TOPIC_PROP_SET))
    {
        StaticJsonBuffer<200> jsonBuffer;
        JsonObject &root = jsonBuffer.parseObject(payload);
        if (!root.success())
        {
            Serial.println("parseObject() failed");
        } else {
            Serial.println("parseObject() success");
            //下一步對收到的云端指令進行處理
        }
    }
}

//連接Mqtt
void mqttCheckConnect()
{
    bool connected = connectAliyunMQTT(mqttClient, PRODUCT_KEY, DEVICE_NAME, DEVICE_SECRET);
    if (connected) {
        Serial.println("MQTT connect succeed!");
        // client.subscribe(ALINK_TOPIC_PROP_POSTRSP);
        mqttClient.subscribe(ALINK_TOPIC_PROP_SET); // 訂閱屬性設(shè)置Topic
        Serial.println("subscribe done");
    }
}

void setup() {
    Serial.begin(115200);

    initWifi(WIFI_SSID, WIFI_PASSWD); // 連接Wifi

    mqttClient.setCallback(callback); // 設(shè)置回調(diào)監(jiān)聽云端下發(fā)的指令
}

void loop() {
    mqttCheckConnect(); // MQTT上云
    mqttClient.loop();

    delay(3000); // 每1秒連接一次
}

再次運行Build看下有沒有異常设捐,應(yīng)該是沒有借浊,有的話檢查下依賴是不是正確,最好和我上面依賴相同萝招,之前發(fā)現(xiàn)阿里有的官方代碼是不支持Json v6只能用v5蚂斤,看下異常log就知道

沒問題的話還需要在下載設(shè)備驅(qū)動,用于我們聯(lián)機刷程序進去

下載完后解壓就好

在刷系統(tǒng)前先看下串口驅(qū)動是否正常槐沼,CH340就是8266曙蒸,如果沒有的小伙伴需要去下載驅(qū)動

沒問題后打開我們解壓出來的run-win.bat

可不要吧這個關(guān)了,不然網(wǎng)頁編輯器識別不到設(shè)備

接著打開在網(wǎng)頁中點擊run選擇自己的設(shè)備串口就等待燒錄成功咯


然后打開阿里云IOT平臺就能看到設(shè)備已激活

下次等我買些硬件就做消息訂閱推送岗钩,這就就這樣

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末纽窟,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子兼吓,更是在濱河造成了極大的恐慌臂港,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,718評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異审孽,居然都是意外死亡县袱,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,683評論 3 385
  • 文/潘曉璐 我一進店門佑力,熙熙樓的掌柜王于貴愁眉苦臉地迎上來显拳,“玉大人,你說我怎么就攤上這事搓萧≡邮” “怎么了?”我有些...
    開封第一講書人閱讀 158,207評論 0 348
  • 文/不壞的土叔 我叫張陵瘸洛,是天一觀的道長揍移。 經(jīng)常有香客問我,道長反肋,這世上最難降的妖魔是什么那伐? 我笑而不...
    開封第一講書人閱讀 56,755評論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮石蔗,結(jié)果婚禮上罕邀,老公的妹妹穿的比我還像新娘。我一直安慰自己养距,他們只是感情好诉探,可當(dāng)我...
    茶點故事閱讀 65,862評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著棍厌,像睡著了一般肾胯。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上耘纱,一...
    開封第一講書人閱讀 50,050評論 1 291
  • 那天敬肚,我揣著相機與錄音,去河邊找鬼束析。 笑死艳馒,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的员寇。 我是一名探鬼主播弄慰,決...
    沈念sama閱讀 39,136評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼丁恭!你這毒婦竟也來了曹动?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,882評論 0 268
  • 序言:老撾萬榮一對情侶失蹤牲览,失蹤者是張志新(化名)和其女友劉穎墓陈,沒想到半個月后恶守,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,330評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡贡必,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,651評論 2 327
  • 正文 我和宋清朗相戀三年兔港,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片仔拟。...
    茶點故事閱讀 38,789評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡衫樊,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出利花,到底是詐尸還是另有隱情科侈,我是刑警寧澤,帶...
    沈念sama閱讀 34,477評論 4 333
  • 正文 年R本政府宣布炒事,位于F島的核電站臀栈,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏挠乳。R本人自食惡果不足惜权薯,卻給世界環(huán)境...
    茶點故事閱讀 40,135評論 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望睡扬。 院中可真熱鬧盟蚣,春花似錦、人聲如沸卖怜。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,864評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽韧涨。三九已至牍戚,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間虑粥,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,099評論 1 267
  • 我被黑心中介騙來泰國打工宪哩, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留娩贷,地道東北人。 一個月前我還...
    沈念sama閱讀 46,598評論 2 362
  • 正文 我出身青樓锁孟,卻偏偏與公主長得像彬祖,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子品抽,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,697評論 2 351

推薦閱讀更多精彩內(nèi)容