計划實現功能:將STM32F103采集到的溫濕度,PM2.5等數值,通過UART與ESP8266通訊,使得ESP8266對外僅充當串口功能的黑盒。ESP8266通過MTQQ發布訂閱數據,設備上傳、接收 阿里雲的數據,通過SmartConfig配網。
用到工具和環境:
1.安信可ESP8266 IDE集成環境,https://wiki.ai-thinker.com/ai_ide_install
注:cygwin的文件已存在在下載文件中,不需要網上搜索下載。不要被鏈接中的內容誤導
2.如何使用安信可ESP系列集成環境 https://wiki.ai-thinker.com/ai_ide_use
3.ESP 系列模組燒錄固件: https://wiki.ai-thinker.com/esp_download
4.官方SDK下載鏈接 https://www.espressif.com/zh-hans/products/hardware/esp8266ex/resources
注:本人使用的是 ESP8266_NONOS_SDK-3.0 + aliyun_mqtt_app。
5.下載 aliyun_mqtt_app。 https://github.com/AngelLiang/esp8266_aliyun_mqtt_app
一. 免費注冊阿里雲,https://www.aliyun.com/ 阿里雲物聯網平台目前收費方法是按消息數量收費,不過每月前100萬條消息免費,對於個人玩轉物聯雲是完全夠用的。獲取阿里雲IoT hub設備認證三元組方法流程:
注冊阿里雲->開通物聯網平台->創建產品->創建設備->獲取認證三元組(DeviceName、ProductKey、DeviceSecret)。具體參照阿里雲文檔https://help.aliyun.com/document_detail/73728.html?spm=5176.11485173.0.0.3fc459afRok2la 這里只介紹部分注意點。
附阿里雲創建完成后頁面:
1.新建產品時,選擇的數據格式決定后續的通訊方式
1)ALINK JSON的數據格式: Alink協議是針對物聯網開發領域設計的一種數據交換規范,數據格式是JSON,用於設備端和物聯網平台的雙向通信,官方給出的SDK中包含了ALINK JSON需要上報的數據格式,一般在設備端處理能力足夠的情況下采用此方式,這里采用此種格式。
2)透傳/自定義 數據格式:使用這種數據格式的上報方式,需要在物聯網平台網頁中(路徑為 產品->數據解析)調用數據解析腳本中的 protocolToRawData
方法,將結果數據轉換成Alink JSON格式。阿里雲文檔參照https://help.aliyun.com/document_detail/68702.html?spm=a2c4g.11186623.6.575.64e920a8CHKJBw 注: 數據格式選擇為透傳/自定義時, 產品頁面下的才有數據解析的選項。ALINK JSON格式下無需設置。
2.創建設備時輸入的DeviceName將用於認證三元組中。獲取認證三元組之后要在 產品->功能定義 中填入需要設備屬性和服務以及事件,這里我使用的是自定義功能,設備的屬性數據只要可讀就能更新來自設備的數據。此頁面下可查看已創建好的物模型(后續將用到)。
二:MQTT協議簡介:基於TCP協議棧上,輕量級的發布訂閱,不實時,低開銷,低寬帶占有。MQTT的topic和三個角色:發布者,訂閱者,代理
1.topic,附加在消息中的標簽,發布信息時附帶topic。
2.發布者:發布一條帶有topic的信息。
3.訂閱者:訂閱感興趣的topic(多個topic在代碼中進行string的判斷選擇)。
4.代理:負責對來自發布者的信息進行存儲操作,並將消息發送至正確的訂閱者去。
附:產品topic查看位置,各個topic功能參展后面的描述,(可自定義topic)。
----------------今天也是充滿希望的一天呦~(博客園限制ID長度.....)