Isi kandungan:
- Langkah 1: Apa yang Anda Perlu
- Langkah 2: Buat Repositori untuk Memegang Firmware Perduaan
- Langkah 3: Buat Binari
- Langkah 4: Buat Aliran Pelayan
- Langkah 5: Tambahkan Logik Pelayan
- Langkah 6: Tambahkan Kod ke Sketsa untuk Meminta Kemas kini
- Langkah 7: Akhirnya, Mulakan Kemas kini
Video: Sediakan Pelayan Kemas Kini Automatik ESP8266: 7 Langkah
2024 Pengarang: John Day | [email protected]. Diubah suai terakhir: 2024-01-30 11:12
Banyak orang sekarang menggunakan ESP8266 dengan banyak penyamarannya (ESP-01S, Wemos D1, NodeMCU, Sonoff dll) untuk sistem automasi rumah. Sekiranya anda menulis kod anda sendiri (seperti saya) mengemas kini masing-masing secara berasingan walaupun melalui OTA (melalui udara) menjadi sedikit membosankan.
Sistem saya sendiri, misalnya mempunyai 8x ESP-01S, 6x Wemos D1, 4x Sonoff Basic 12x Sonoff S20, 2x Sonoff SV dan NodeMCU yang berkongsi pangkalan kod yang sama, jadi terdapat 33 peranti yang perlu dikemas kini apabila saya membuat kod mudah ubah.
Tetapi ada cara yang lebih mudah: "pelayan kemas kini". Inti Arduino IDE + ESP8266 yang sangat baik mempunyai perpustakaan untuk melakukan sebahagian besar kerja (ESP8266httpUpdate), tetapi anda perlu mengetahui cara menyediakan pelayan anda sendiri untuk membuatnya berfungsi.
Instructable ini menunjukkan kepada anda bagaimana menggunakan pelayan NODE-RED, tetapi logik yang sama berlaku untuk teknologi pelayan pilihan anda, mis. Apache + PHP dll
Langkah 1: Apa yang Anda Perlu
- Arduino IDE
- Teras ESP8266
- Mana-mana papan dev ESP8266 dengan RAM kilat 1M atau lebih
- Pelayan Web (walaupun raspberry Pi yang rendah hati - Itu yang saya gunakan)
- (pilihan) alat mkspiffs jika anda ingin mengemas kini imej sistem fail SPIFFS secara automatik
Langkah 2: Buat Repositori untuk Memegang Firmware Perduaan
Di pelayan saya, saya mempunyai folder bernama / home / pi / trucFirmware yang menyimpan pelbagai perisian peranti dan gambar SPIFFS
Saya mengekalkan binari yang berasingan untuk setiap jenis perkakasan (dari satu fail sumber dengan beberapa # definisi) dan apabila pelepasan baru siap, saya menggunakan perintah menu Arduino IDE "sketch / Export compinary Binary" untuk setiap peranti sasaran. Perhatikan bahawa walaupun terdapat 5 jenis perkakasan yang berbeza, hanya ada dua binari SPIFFS: versi 1M dan 4M - dibina dengan alat mkspiffs - kerana semua peranti mempunyai flash 1M atau 4M.
Langkah 3: Buat Binari
Dengan menggunakan sketsa pilihan menu Arduino IDE / Export Compiled Binary, buat firmware yang akan dimuat ke peranti apabila memintanya dari pelayan kemas kini.
Sekiranya anda memerlukan binari SPIFFS, anda perlu memasang alat mkspiffs.
Setelah anda memilikinya, membina binari SPIFFS adalah mudah. Saya mempunyai fail kumpulan satu baris untuk versi 1M yang mengambil nombor versi sebagai parameter (% 1)
mkspiffs -c data / spiffs_% 1_1M.bin
dan satu lagi untuk versi 4M:
mkspiffs -p 256 -b 8192 -s 0x0FB000 -c data / spiffs_% 1_4M.bin
Saya kemudian menyalin semua binari yang disusun dan fail binari SPIFFS ke repositori
Langkah 4: Buat Aliran Pelayan
Saya menggunakan NODE-MERAH, tetapi logik mudah akan sama pada teknologi / bahasa pelayan mana pun.
a) Tentukan url yang akan mendengar permintaan ESP8266httpUpdate. RaspberryPi serevr saya ada pada 192.168.1.4 dan mendengar di port 1880 untuk / dikemas kini dengan jenis perkakasan yang dilampirkan. Oleh itu, jika saya akan meminta perduaan untuk Wemos D1 Mini, urlnya berakhir sebagai:
192.168.1.4:1880/update/d1_mini
b) Buat kod untuk menangani logik berikut:
ESP8266: "Hai, saya menjalankan versi firmware a.b.c, adakah anda mempunyai versi yang lebih baru?" Pelayan: "Biar saya lihat … ah ya saya ada a.b.d - ini dia …"
Sekiranya versi yang lebih baru wujud pelayan hanya menghantarnya sebagai muatan data binari dalam balasan http. Kelas Pembaharuan ESP8266http melakukan bahagian yang sukar untuk menyalin perduaan ke dalam memori, mengubah alamat but firmware ke kod baru daripada (jika diminta) menghidupkan semula peranti untuk menjalankan kod baru.
Sekiranya di sisi lain tidak ada versi yang lebih tinggi, ia membalas dengan ralat http 304 yang secara berkesan mengatakan: "Saya tidak mempunyai apa-apa untuk anda" dan kod anda terus berjalan seperti biasa.
Langkah 5: Tambahkan Logik Pelayan
Node pertama dalam aliran "mendengar" permintaan http untuk url https://192.168.1.4:1880/kemas kini dengan jenis peranti yang dilampirkan. Ia meneruskannya ke nod fungsi "Construct search path" yang mempunyai kod javascript berikut:
msg.type = msg.req.params.type; var h = msg.req.headers; msg.version = h ["x-esp8266-versi"];
msg.mode = h ["x-esp8266-mod"];
jika (msg.mode == "sketsa") {msg.payload = "/ home / pi / trucFirmware / *. ino." + msg.type + ". bin"; } lain {var sz = h ['x-esp8266-chip-size']; msg.payload = "/ home / pi / trucFirmware / spiffs _ * _" + (sz / 1048576) + "M.bin"; } kembalikan msg;
Ini hanya menetapkan jalan yang sesuai dengan wildcard untuk fungsi sys yang berikut, yang hanya berjalan
ls - r
Keluaran kemudian dimasukkan ke node fungsi "Bandingkan versi":
var f = msg.payload.split ("\ n") [0]; msg.filename = f;
jika (msg.mode == "lakaran") {
f = f.replace ("/ rumah / pi / trucFirmware / truc_", ""); f = f.replace (". ino." + msg.type + ". bin", ""); } lain {f = f.replace ("/ home / pi / trucFirmware / spiffs_", ""); f = f.replace (/ _ / dM \.bin /, ""); }
jika (msg.version <f) {
node.warn ("diperlukan peningkatan");
node.warn ("akan kembali" + msg.filename); kembalikan msg; } node.warn ("tiada peningkatan"); msg.statusCode = 304; msg.payload = ;
kembalikan msg;
Node suis kemudian memastikan bahawa mesej 304 "tidak perlu kemas kini diperlukan" dihantar atau binari baru yang sebenarnya dikembalikan dan dihantar kembali ke peranti.
Langkah 6: Tambahkan Kod ke Sketsa untuk Meminta Kemas kini
Sketsa perlu memasukkan kod berikut di dalamnya sehingga ia akan dikemas kini secara automatik pada saat anda menambah nombor versi:
#sertakan
#tentukan TRUC_VERSION "0_4_99"
#tentukan SPIFFS_VERSION "0_5_0"
// THIS_DEVICE ditetapkan lebih awal bergantung pada pelbagai definisi masa kompilasi // yang akhirnya menentukan jenis hw, mis. #definisikan INI_DEVICE "d1_mini" const char * updateUrl = "https://192.168.1.4:1880/update/" THIS_DEVICE; // ini adalah pelayan raspberry Pi saya, tahun 1880 adalah port NODE-MERAH lalai {String msg; t_httpUpdate_return ret; ESPhttpUpdate.rebootOnUpdate (false); jika (lakaran) {ret = ESPhttpUpdate.update (updateUrl, TRUC_VERSION); // **************** Inilah garis yang "menjalankan perniagaan"} lain {ret = ESPhttpUpdate.updateSpiffs (updateUrl, SPIFFS_VERSION); } jika (ret! = HTTP_UPDATE_NO_UPDATES) {if (ret == HTTP_UPDATE_OK) {
Serial.printf ("KEMASKINI BERJAYA");
kembali benar; } lain {if (ret == HTTP_UPDATE_FAILED) {
Serial.printf ("Peningkatan Gagal");
}}} kembali palsu; }
Langkah 7: Akhirnya, Mulakan Kemas kini
Pada masa boot, atau mungkin sebagai tindak balas kepada mesej MQTT (seperti yang saya lakukan) jalankan kod berikut:
jika (_actualUpdate (true)) ESP.restart ();
// atau untuk SPIFFS…
jika (_actualUpdate (false)) ESP.restart ();
Peranti akan diperbaharui sendiri dan but semula menjalankan kod terkini dari pelayan. Jauh lebih mudah bagi saya daripada mengemas kini 33 peranti secara manual!
Banyak maklumat yang lebih berguna mengenai Automasi Rumah, IOT dan pengaturcaraan ESP8266 boleh didapati di Blog Saya
Disyorkan:
Penjejak Kemas Kini Covid-19 Menggunakan Langkah ESP8266: 9
Covid-19 Update Tracker Menggunakan ESP8266: Ini adalah projek yang menunjukkan data terkini wabak coronavirus dari pelbagai bandar di negeri-negeri India secara realtime pada paparan OLED. Penjejak status Langsung ini membantu anda memantau kemas kini covid-19 masa nyata di daerah anda. Projek ini sepenuhnya
Reka PCB Anda Menggunakan Sprint Layout 2020 Dengan Kemas Kini Baru: 3 Langkah
Reka PCB Anda Menggunakan Sprint Layout 2020 Dengan Kemas Kini Baru: Sebilangan besar pencinta elektronik membuat litar elektronik menggunakan kaedah yang berbeza. kadang-kadang kita perlu membuat PCB untuk mendapatkan output yang betul dan mengurangkan bunyi dan kemasan yang padat. hari ini kita mempunyai banyak perisian untuk merancang PCB sendiri. Tetapi masalahnya paling banyak
Kipas ESP8266 POV Dengan Jam dan Halaman Web Teks Kemas kini: 8 Langkah (dengan Gambar)
Kipas ESP8266 POV Dengan Jam dan Halaman Web Teks Kemas kini: Ini adalah kelajuan berubah-ubah, POV (Persistence Of Vision), Kipas yang secara berkala memaparkan waktu, dan dua pesanan teks yang dapat dikemas kini " dengan cepat " Kipas POV juga pelayan web satu halaman yang membolehkan anda menukar dua teks saya
Kemas kini HTTPS Redirect Versi 2.0 ESP8266 & Google Spreadsheets: 10 Langkah
Kemas kini HTTPS Redirect Versi 2.0 ESP8266 & Google Spreadsheets: Dalam ujian sebelumnya kami membuat komunikasi modul ESP8266 dan penghantaran dua arah data ke Helaian Google dengan bantuan Skrip Google, Awalnya terima kasih kepada Sujay Phadke " electronicsguy " pencipta pustaka HTTPSRedirect
Kemas kini Firmware Esp8266: 7 Langkah
Kemas kini Firmware Esp8266: Modul ESP8266 adalah modul Wayarles yang murah. Ia mempunyai SOC (sistem pada cip) yang mampu menyediakan wifi kepada mana-mana pengawal mikro / mikropemproses. Terdapat dua cara yang boleh digunakan esp8266. Standalone esp8266 Esp8266 dengan raspberry pi atau arduino atau