ESP8266 OTA之伺服器更新

2021-09-20 05:25:18 字數 3656 閱讀 2609

我之前介紹了兩篇關於esp8266的ota更新方法:

說實話以上這兩種方案除有點好玩其實沒有什麼實用性,由其在開發產品時上述的兩種方案就是一種雞肋,甚至可以說是不可用的。那現在市面上的各種智慧型裝置是怎麼更新韌體的呢?

答案顯然是肯定的。本文所講述的ota做法其實才是做產品的正道。

然後將自更新邏輯寫入韌體:

#include #include #include #include #include #define use_serial serial

esp8266wifimulti wifimulti;

void setup()

wifi.mode(wifi_sta);

wifimulti.addap("ssid", "password");

}void loop()

}}

看完以上**是否是會有種想罵人的衝動?我當時找資料看esp的ota使用的正確姿勢時也有種想罵娘的衝動:太***簡單了!

這個update方法是有多個過載版本的,上面只是用了其中乙個最簡單的過載版本,因此只有乙個引數指向更新檔案。

const string& currentversion, const uint8_t httpsfingerprint[20]); // bearssl以下是esp8266httpupdate的其它方法:

void rebootonupdate(bool reboot)  // 更新後重啟

int getlasterror(void); // 獲取最後出錯的錯誤編號

string getlasterrorstring(void); // 獲取出錯的資訊描述

以下是esphttpupdate產生的請求頭內容:

[http_user_agent] => esp8266-http-update [http_x_esp8266_sta_mac] => 18:fe:aa:aa:aa:aa [http_x_esp8266_ap_mac] => 1a:fe:aa:aa:aa:aa [http_x_esp8266_free_space] => 671744 [http_x_esp8266_sketch_size] => 373940 [http_x_esp8266_chip_size] => 524288 [http_x_esp8266_sdk_version] => 1.3.0 [http_x_esp8266_version] => door-7-g14f53a19
你可以在更新伺服器中檢測這些請求頭是符合法,同時也可以檢測當前發出請求的esp所使用的韌體版本是最新的,如果服務端有新的版本可用就重定向到該檔案然後就使esp進行自更新。

以下是用php來寫乙個最簡單的更新伺服器:

ESP8266簡單幾步建立伺服器

don t talk,show me code at restore 恢復出廠設定 簡單粗暴 at rst 重啟一哈 at cwmode 3 設定wifi為state和ap模式 at cwjap qq qwertyuiop789000 連線wifi,熱點名 熱點密碼 at cipmux 1 建立tc...

ESP8266 開啟伺服器模式和客戶端模式

出處 感謝樓主堅強的山貓,step 1 最小系統啟動 這個應該算是比較基礎的,若想從flash啟動進入at系統,只需中間四個腳接vcc高電平即可,其中gpio0為高電平代表從flash啟動,gpio0為低電平代表進入系統公升級狀態,此時可以經過串列埠公升級內部韌體。gpio16 rst 可做外部硬體...

檔案伺服器之NFS伺服器

nfs是network file system縮寫,可以通過往裡,讓不同的機器,不同的操作協同可以共享彼此的檔案。nfs最大問題在 許可權 客戶端與伺服器端必須具有相同的賬號才能夠訪問某些目錄或檔案。nfs啟動需要通過所謂的遠端呼叫 rpc nfs預設埠是隨機的,小於1024.rpc主要功能就是指定...