Mundarija:
- 1 -qadam: Sizga nima kerak
- 2 -qadam: Ikkilik dasturiy ta'minotni saqlash uchun ombor yarating
- 3 -qadam: Ikkilik fayllarni yarating
- 4 -qadam: Server oqimini yarating
- 5 -qadam: Server mantig'ini qo'shing
- 6 -qadam: Yangilashni so'rash uchun eskizga kod qo'shing
- 7 -qadam: Nihoyat, yangilanishni boshlang
Video: ESP8266 avtomatik yangilash serverini o'rnating: 7 qadam
2024 Muallif: John Day | [email protected]. Oxirgi o'zgartirilgan: 2024-01-30 13:28
Hozir ko'p odamlar uy avtomatlashtirish tizimlari uchun ESP8266-ni turli ko'rinishlarda ishlatishadi (ESP-01S, Wemos D1, NodeMCU, Sonoff va boshqalar). Agar siz o'z kodingizni yozsangiz (men qilgandek), ularning har birini OTA (havo orqali) orqali alohida yangilash biroz zerikarli bo'ladi.
Mening shaxsiy tizimimda, masalan, 8x ESP-01S, 6x Wemos D1, 4x Sonoff Basic 12x Sonoff S20, 2x Sonoff SV va umumiy kodlar bazasiga ega NodeMCU bor, shuning uchun men oddiy kodni yaratganimda 33 ta qurilma yangilanadi. o'zgartirish.
Ammo osonroq yo'l bor: "yangilash serveri". Zo'r Arduino IDE + ESP8266 yadrosi ko'p ishlarni bajaradigan kutubxonaga ega (ESP8266httpUpdate), lekin uning ishlashi uchun siz o'z serveringizni qanday sozlashni bilishingiz kerak.
Bu ko'rsatma sizga NODE-RED serveridan qanday foydalanishni ko'rsatadi, lekin xuddi shu mantiq siz tanlagan server texnologiyasi uchun amal qiladi. Apache + PHP va boshqalar
1 -qadam: Sizga nima kerak
- Arduino IDE
- Yadro ESP8266
- 1M yoki undan ko'p flesh -RAMga ega har qanday ESP8266 dev
- Veb -server (hatto oddiy malina Pi ham shunday qiladi - men buni ishlataman)
- (ixtiyoriy) mkspiffs vositasi, agar siz SPIFFS fayl tizimi tasvirini avtomatik yangilashni xohlasangiz
2 -qadam: Ikkilik dasturiy ta'minotni saqlash uchun ombor yarating
Serverda menda/home/pi/trucFirmware nomli papka bor, u har xil qurilma dasturlari va SPIFFS tasvirlarini saqlaydi.
Men har bir uskuna uchun alohida ikkilikni saqlayman (bir nechta #definesli bitta manba faylidan) va yangi versiya tayyor bo'lganda, men har bir maqsadli qurilma uchun Arduino IDE "eskiz/eksport kompilyatsiya qilingan ikkilik" menyu buyrug'idan foydalanaman. 5 xil uskuna mavjud bo'lsa -da, faqat ikkita SPIFFS ikkiliklari mavjud: 1M va 4M versiyasi - mkspiffs vositasi bilan yaratilgan, chunki barcha qurilmalarda 1M yoki 4M fleshli.
3 -qadam: Ikkilik fayllarni yarating
Arduino IDE menyusining sketch/Exiled Compined Binary variantidan foydalanib, uni yangilash serveridan so'ralganda qurilmaga yuklanadigan dasturiy ta'minotni yarating.
Agar sizga SPIFFS ikkilik kerak bo'lsa, siz mkspiffs vositasini o'rnatishingiz kerak bo'ladi.
Agar sizda bo'lsa, SPIFFS ikkilik tuzish juda oddiy. Menda 1M versiyasi uchun versiya raqamini parametr sifatida qabul qiladigan bitta qatorli ommaviy ish fayli bor (%1)
mkspiffs -c ma'lumotlar/ spiffs_%1_1M.bin
va 4M versiyasi uchun boshqasi:
mkspiffs -p 256 -b 8192 -s 0x0FB000 -c ma'lumotlar/ spiffs_%1_4M.bin
Keyin barcha tuzilgan ikkilik fayllarni va SPIFFS.binary fayllarini omborga ko'chiraman
4 -qadam: Server oqimini yarating
Men NODE-RED dan foydalanayapman, lekin har qanday server texnologiyasi / tilida oddiy mantiq bir xil bo'ladi.
a) ESP8266httpUpdate so'rovini tinglaydigan urlni aniqlang. Mening raspberryPi serevr 192.168.1.4da va 1880 portda /yangilangan uskuna turi bilan tinglanadi. Agar men Wemos D1 Mini uchun ikkilik so'rov qilmoqchi bo'lsam, url quyidagicha tugaydi:
192.168.1.4:1880/update/d1_mini
b) quyidagi mantiqni boshqarish uchun kod yarating:
ESP8266: "Salom, men a.b.c dasturiy ta'minot versiyasini ishlayapman, sizda yangi versiya bormi?" Server: "Ko'raylik … ha ha menda a.b.d bor - mana keldi …"
Agar yangi versiya mavjud bo'lsa, server uni http javobida ikkilik ma'lumotlarning yuklanishi sifatida yuboradi. ESP8266httpUpdate klassi ikkilikni xotiraga nusxalashning qiyin qismini bajaradi, proshivka yuklash manzilini yangi kodga o'zgartiradi (agar so'ralsa) qurilmani yangi kodni ishga tushirish uchun.
Agar boshqa versiyasi bo'lmasa, u http 304 xatosi bilan javob beradi, unda: "Menda siz uchun hech narsa yo'q" va sizning kodingiz odatdagidek ishlashda davom etadi.
5 -qadam: Server mantig'ini qo'shing
Oqimdagi birinchi tugun, qurilma turi qo'shilgan holda https://192.168.1.4:1880/update URL manziliga http so'rovini "tinglaydi". Buni quyidagi JavaScript kodi bo'lgan "Qidiruv yo'lini yaratish" funktsiya tuguniga o'tkazadi:
msg.type = msg.req.params.type; var h = msg.req.headers; msg.version = h ["x-esp8266-versiya"];
msg.mode = h ["x-esp8266-rejim"];
if (msg.mode == "eskiz") {msg.payload = "/home/pi/trucFirmware/*. ino."+msg.type+". bin"; } else {var sz = h ['x-esp8266-chip-size']; msg.payload = "/home/pi/trucFirmware/spiffs _*_"+(sz/1048576)+"M.bin"; } xabarni qaytarish;
Bu shunchaki ishlaydigan sys funktsiyasi uchun joker belgi bilan mos yo'lni o'rnatadi
ls - r
Keyin chiqish "Versiyalarni solishtirish" funktsiya tuguniga uzatiladi:
var f = msg.payload.split ("\ n") [0]; msg.filename = f;
agar (msg.mode == "eskiz") {
f = f.replace ("/home/pi/trucFirmware/truc_", ""); f = f.replace (". ino."+msg.type+". bin", ""); } boshqa {f = f.replace ("/home/pi/trucFirmware/spiffs_", ""); f = f.qayta (/_ / dM \.bin/, ""); }
agar (msg.version <f) {
node.warn ("yangilash kerak");
node.warn ("qaytadi"+msg.filename); xabarni qaytarish; } node.warn ("yangilanish yo'q"); msg.statusCode = 304; msg.to'lov = ;
xabarni qaytarish;
Keyin tugun tugmasi 304 "yangilanishga hojat yo'q" xabari yuborilishini yoki haqiqiy ikkilik qaytarilishini va qurilmaga qaytarilishini ta'minlaydi.
6 -qadam: Yangilashni so'rash uchun eskizga kod qo'shing
Eskizda quyidagi kod bo'lishi kerak, shunda u keyingi safar versiya raqamini ko'paytirganda avtomatik ravishda yangilanadi:
#qo'shing
#ta'rif TRUC_VERSION "0_4_99"
#define SPIFFS_VERSION "0_5_0"
// THIS_DEVICE kompilyatsiya vaqtining // ta'rifiga qarab, oldinroq o'rnatiladi, ular hw turini aniqlaydi, masalan. #DISH BU_DEVICE "d1_mini" const char * updateUrl = "https://192.168.1.4:1880/update/" THIS_DEVICE; // bu mening malina Pi serverim, 1880-bu NODE-RED standart porti // /yangilash-bu serverni "tinglash" uchun tanlagan url, so'ngra qurilma turi … bool actualUpdate (bool eskiz = noto'g'ri) {String xabari; t_httpUpdate_return qaytish; ESPhttpUpdate.rebootOnUpdate (noto'g'ri); if (eskiz) {ret = ESPhttpUpdate.update (updateUrl, TRUC_VERSION); // **************** Bu "ishni bajaradigan" qator}} boshqa {ret = ESPhttpUpdate.updateSpiffs (updateUrl, SPIFFS_VERSION); } if (ret! = HTTP_UPDATE_NO_UPDATES) {if (ret == HTTP_UPDATE_OK) {
Serial.printf ("YANGILASH MUVOFIQ");
haqiqatga qaytish; } boshqa {if (ret == HTTP_UPDATE_FAILED) {
Serial.printf ("Yangilash muvaffaqiyatsiz tugadi");
}}} false qaytarish; }
7 -qadam: Nihoyat, yangilanishni boshlang
Yuklash vaqtida, yoki MQTT xabariga javoban (men qilganimdek) quyidagi kodni ishga tushiring:
if (_actualUpdate (true)) ESP.restart ();
// yoki SPIFFS uchun …
if (_actualUpdate (false)) ESP.restart ();
Qurilma o'zini yangilaydi va serverdan so'nggi kodni ishga tushiradi. Men uchun 33 ta qurilmani qo'lda yangilashdan ko'ra ancha sodda!
Mening blogimda uy avtomatizatsiyasi, IOT va ESP8266 dasturlash haqida ko'proq foydali ma'lumotlarni topishingiz mumkin
Tavsiya:
Raspberry Pi -da Shinken tarmoq monitorini o'rnating va o'rnating: 14 qadam
Raspberry Pi -da Shinken Network Monitor -ni o'rnating va o'rnating: QAYD: shinken oxirgi marta MAR2016 -da 2.4.3 -ning barqaror versiyasiga yangilangan. Shunday qilib, bir necha yil oldin men uy tarmog'ini monitoring qilishning boshqa usullariga o'tdim. Bundan tashqari, php5 mavjud emas, shuning uchun iltimos, bu ko'rsatmalarni ishlatmang
Mahalliy Blynk serverini yaratish: 5 qadam
Mahalliy Blynk serverini yaratish: Bu xabarda biz mahalliy Blynk serverini qanday yaratishni bilib olamiz, bu esa standart serverdan foydalanganda kechikish vaqtini sezilarli darajada kamaytiradi. Biz uni Pi Zero W yordamida o'rnatdik va bunga ishonch hosil qilish uchun demo -loyihani ham yaratamiz
Tiny Raspberry Pi tarmoq serverini ulang va o'ynang: 6 qadam (rasmlar bilan)
Plug & Play Tiny Raspberry Pi tarmoq serveri: Yaqinda men ikkita Raspberry Pi 1 Model A+ ni arzon narxda sotib oldim. Agar siz Pi Model A haqida eshitmagan bo'lsangiz, bu Raspberry Pi ning birinchi form faktorlaridan biri bo'lib, u Pi Zero -dan kattaroq va standart Raspberry Pi -dan kichikroq. Men har doim xohlayman
FireWall -ga MC serverini qo'shing: 12 qadam
FireWall -ga MC Server qo'shing: 1. " wf.msc " vazifalar panelining chap qismidagi qidirish satriga. Boshqarish paneliga o'ting, Windows (Himoyachilar) xavfsizlik devorini oching va chapdagi menyudan Kengaytirilgan sozlamalarni tanlang
Raspberry Pi yordamida fayl serverini qanday qilish kerak: 7 qadam
Raspberry Pi yordamida fayl serverini qanday qilish kerak: Hozirgi kunda bitta uyda bir nechta kompyuterlar borki, ular orasida musiqa va videolar tarqalgan. O'zingizning narsalaringizni tartibga solishning yana bir usuli - uni FILE SERVER deb nomlangan markazlashtirilgan serverda saqlash. Ushbu ko'rsatmalarda biz fayl serverini yaratamiz