Բովանդակություն:
- Քայլ 1: Այն, ինչ ձեզ հարկավոր է
- Քայլ 2. Ստեղծեք պահեստ երկուական ծրագրակազմեր պահելու համար
- Քայլ 3: Ստեղծեք երկուական ֆայլեր
- Քայլ 4: Ստեղծեք սերվերի հոսքը
- Քայլ 5: Ավելացրեք սերվերի տրամաբանությունը
- Քայլ 6: Թարմացում պահանջելու համար էսքիզին ավելացրեք ծածկագիր
- Քայլ 7: Վերջապես, նախաձեռնեք թարմացումը
Video: Տեղադրեք ESP8266 ավտոմատ թարմացման սերվեր ՝ 7 քայլ
2024 Հեղինակ: John Day | [email protected]. Վերջին փոփոխված: 2024-01-30 09:52
Շատերն այժմ օգտագործում են ESP8266- ը իր բազմաթիվ ձևերով (ESP-01S, Wemos D1, NodeMCU, Sonoff և այլն) ՝ տան ավտոմատացման համակարգերի համար: Եթե դուք գրում եք ձեր սեփական կոդը (ինչպես ես եմ անում), դրանցից յուրաքանչյուրի առանձին թարմացումը նույնիսկ OTA- ի միջոցով (եթերում) մի փոքր հոգնեցուցիչ է դառնում:
Իմ սեփական համակարգը, օրինակ, ունի 8x ESP-01S, 6x Wemos D1, 4x Sonoff Basic 12x Sonoff S20, 2x Sonoff SV և NodeMCU, որոնք կիսում են ընդհանուր կոդի բազա, այնպես որ դա ընդհանուր առմամբ 33 սարք է ՝ պարզ կոդ կազմելիս: փոփոխություն.
Բայց կա ավելի հեշտ միջոց ՝ «թարմացման սերվեր»: Գերազանց Arduino IDE + ESP8266 միջուկը ունի գրադարան ՝ աշխատանքների մեծ մասն իրականացնելու համար (ESP8266httpUpdate), բայց դուք պետք է իմանաք, թե ինչպես ստեղծել ձեր սեփական սերվերը ՝ այն աշխատեցնելու համար:
Այս հրահանգը ցույց է տալիս, թե ինչպես օգտագործել NODE-RED սերվեր, բայց նույն տրամաբանությունը վերաբերում է ձեր ընտրած սերվերի ցանկացած տեխնոլոգիային, օրինակ. Apache + PHP և այլն
Քայլ 1: Այն, ինչ ձեզ հարկավոր է
- Arduino IDE
- ESP8266 միջուկ
- Eանկացած ESP8266 dev տախտակ 1 Մ կամ ավելի ֆլեշ RAM- ով
- Վեբ սերվեր (նույնիսկ համեստ ազնվամորի Pi- ն դա կանի. Դա այն է, ինչ ես օգտագործում եմ)
- (ըստ ցանկության) mkspiffs գործիք, եթե ցանկանում եք ինքնաբերաբար թարմացնել SPIFFS ֆայլային համակարգի պատկերը
Քայլ 2. Ստեղծեք պահեստ երկուական ծրագրակազմեր պահելու համար
Իմ սերվերի վրա ես ունեմ մի թղթապանակ, որը կոչվում է/home/pi/trucFirmware, որը պահում է սարքի տարբեր ծրագրակազմեր և SPIFFS պատկերներ
Ես պահում եմ առանձին երկուականություն յուրաքանչյուր ապարատային տիպի համար (մեկ աղբյուրի ֆայլից ՝ մի քանի #սահմանումներով) և երբ նոր թողարկումը պատրաստ լինի, ես օգտագործում եմ Arduino IDE «ուրվագիծ/արտահանել կազմված երկուական» մենյուի հրամանը յուրաքանչյուր թիրախային սարքի համար: Նկատի ունեցեք, որ նույնիսկ թեև կան 5 տարբեր տեսակի սարքավորումներ, կան ընդամենը երկու SPIFFS երկուական ֆայլեր ՝ 1M և 4M տարբերակ ՝ կառուցված mkspiffs գործիքով, քանի որ բոլոր սարքերն ունեն 1M կամ 4M ֆլեշ:
Քայլ 3: Ստեղծեք երկուական ֆայլեր
Օգտագործելով Arduino IDE ընտրացանկի ընտրանքի ուրվագիծը/Արտահանել կազմված երկուական, ստեղծեք որոնվածը, որը կբեռնվի սարքում, երբ այն խնդրի թարմացման սերվերից:
Եթե Ձեզ անհրաժեշտ է SPIFFS երկուական ֆայլ, ապա ձեզ հարկավոր է տեղադրել mkspiffs գործիքը:
Երբ այն ունեք, SPIFFS երկուական կառուցելը պարզ է: Ես ունեմ 1 տող տարբերակի մեկ տողանոց խմբաքանակ, որը որպես պարամետր ընդունում է տարբերակի համարը (%1)
mkspiffs -c data/ spiffs_%1_1M.bin
և մեկ այլ 4M տարբերակի համար.
mkspiffs -p 256 -b 8192 -s 0x0FB000 -c տվյալներ/ spiffs_%1_4M.bin
Այնուհետև ես պատճենում եմ բոլոր կազմված երկուական ֆայլերն ու SPIFFS. Երկուական ֆայլերը պահեստ
Քայլ 4: Ստեղծեք սերվերի հոսքը
Ես օգտագործում եմ NODE-RED, բայց պարզ տրամաբանությունը նույնը կլինի սերվերի ցանկացած տեխնոլոգիայի / լեզվի վրա:
ա) Սահմանեք url, որը կլսի ESP8266httpUpdate խնդրանքը: Իմ raspberryPi serevr- ը 192.168.1.4 -ում է և լսում է 1880 նավահանգստում /թարմացնելու համար `կցված ապարատային տեսակով: Այսպիսով, եթե ես պատրաստվում եմ երկուական պահանջել Wemos D1 Mini- ի համար, url- ն ավարտվում է հետևյալ կերպ.
192.168.1.4:1880/update/d1_mini
բ) Ստեղծեք ծածկագիր ՝ հետևյալ տրամաբանությունը կարգավորելու համար.
ESP8266. «Ողջույն, ես գործարկում եմ a.b.c- ի որոնվածը, նոր տարբերակ ունե՞ք»: Սերվեր. «Թույլ տվեք տեսնել … այո, ես a.b.d ունեմ, ահա գալիս է …»
Եթե գոյություն ունի ավելի նոր տարբերակ, սերվերը պարզապես ուղարկում է այն որպես երկուական տվյալների բեռ http պատասխանում: ESP8266httpUpdate դասը կատարում է երկուական հիշողության մեջ պատճենելու բարդ հատվածը ՝ որոնվածի բեռնման հասցեն փոխելով նոր կոդի, քան (եթե պահանջվում է) վերագործարկել սարքը ՝ նոր ծածկագիրը գործարկելու համար:
Եթե մյուս կողմից չկա ավելի բարձր տարբերակ, այն պատասխանում է http 304 սխալով, որն արդյունավետորեն ասում է. «Ես քեզ համար ոչինչ չունեմ», և ձեր կոդը շարունակում է գործել որպես սովորական:
Քայլ 5: Ավելացրեք սերվերի տրամաբանությունը
Հոսքի առաջին հանգույցը «լսում է» http- ի ՝ https://192.168.1.4:1880/lpdate հասցեագրման հայցման համար ՝ կցված սարքի տեսակին: Այն փոխանցում է «Կառուցել որոնման ուղի» գործառական հանգույցին, որն ունի հետևյալ javascript ծածկագիրը.
msg.type = msg.req.params.type; var h = msg.req.headers; msg.version = h ["x-esp8266-version"];
msg.mode = h ["x-esp8266-mode"];
if (msg.mode == "ուրվագիծ") {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"; } վերադարձ msg;
Սա պարզապես ստեղծում է համապատասխան ուղի ՝ նշագծով, որը հետևում է sys գործառույթին, որը պարզապես աշխատում է
ls - r
Այնուհետեւ ելքը սնվում է «Համեմատել տարբերակները» գործառական հանգույցին.
var f = msg.payload.split ("\ n") [0]; msg.filename = f;
եթե (msg.mode == "ուրվագիծ") {
f = f. փոխարինել ("/home/pi/trucFirmware/truc_", ""); f = f.replace (". ino."+msg.type+". bin", ""); } else {f = f.replace ("/home/pi/trucFirmware/spiffs_", ""); f = f. փոխարինել (/_ / dM \.bin/, ""); }
եթե (msg.version <f) {
node.warn («արդիականացումը պարտադիր է»);
node.warn ("կվերադառնա"+msg.filename); վերադարձնել msg; } node.warn («արդիականացում չկա»); msg.statusCode = 304; msg.payload = ;
վերադարձնել msg;
Անջատիչ հանգույցն այնուհետև ապահովում է, որ կամ 304 «թարմացում չի պահանջվում» հաղորդագրությունը ուղարկվի, կամ փաստացի նոր երկուականը վերադարձվի և հետ ուղարկվի սարքին:
Քայլ 6: Թարմացում պահանջելու համար էսքիզին ավելացրեք ծածկագիր
Էսքիզը պետք է պարունակի հետևյալ ծածկագիրը, որպեսզի հաջորդ անգամ ավտոմատ կերպով թարմացվի տարբերակի համարը.
#ներառում
#սահմանեք TRUC_VERSION «0_4_99»
#սահմանել SPIFFS_VERSION «0_5_0»
// THIS_DEVICE- ը ավելի վաղ է դրված ՝ կախված կազմման ժամանակի տարբեր սահմանումներից // որոնք ի վերջո սահմանում են hw տեսակը, օրինակ. #սահմանեք ԱՅՍ_ՍԱՐՔԸ «d1_mini» const char * updateUrl = "https://192.168.1.4:1880/update/" THIS_DEVICE; // սա իմ ազնվամորու Pi սերվերն է, 1880-ը լռելյայն NODE-RED պորտն է // /թարմացումն այն URL- ն է, որը ես ընտրել եմ սերվերի համար «լսելու» համար, որին հաջորդում է սարքի տեսակը … bool actualUpdate (bool sketch = false) {Լարային հաղորդագրություն; t_httpUpdate_return ret; ESPhttpUpdate.rebootOnUpdate (կեղծ); if (ուրվագիծ) {ret = ESPhttpUpdate.update (updateUrl, TRUC_VERSION); // **************** Սա այն տողն է, որը «զբաղվում է բիզնեսով»} այլապես {ret = ESPhttpUpdate.updateSpiffs (updateUrl, SPIFFS_VERSION); } if (ret! = HTTP_UPDATE_NO_UPDATES) {if (ret == HTTP_UPDATE_OK) {
Serial.printf ("UPDATE SUCCEEDED");
վերադարձնել ճշմարիտ; } այլ {if (ret == HTTP_UPDATE_FAILED) {
Serial.printf («Թարմացումը ձախողվեց»);
}}} վերադարձնել կեղծ; }
Քայլ 7: Վերջապես, նախաձեռնեք թարմացումը
Բեռնման ժամանակ, կամ գուցե ի պատասխան MQTT հաղորդագրության (ինչպես ես եմ անում) գործարկել հետևյալ ծածկագիրը.
if (_actualUpdate (true)) ESP.restart ();
// կամ SPIFFS- ի համար…
if (_actualUpdate (false)) ESP.restart ();
Սարքը ինքնաբերաբար կթարմացվի և կվերագործարկվի սերվերի վերջին ծածկագրի գործարկմամբ: Ինձ համար շատ ավելի պարզ է, քան 33 սարք ձեռքով թարմացնելը:
Տան ավտոմատացման, IOT- ի և ESP8266- ի ծրագրավորման մասին շատ ավելի օգտակար տեղեկություններ կարելի է գտնել Իմ բլոգում
Խորհուրդ ենք տալիս:
Ինչպես օգտագործել ESP8266 որպես վեբ սերվեր ՝ 5 քայլ
Ինչպես օգտագործել ESP8266 որպես վեբ սերվեր: Բարև, ես այժմ օգտագործում եմ Windows 10, NodeMCU 1.0 և ահա այն ծրագրակազմի ցանկը, որն օգտագործել եմ և տեղադրման ուղեցույցները: Arduino IDE Լրացուցիչ տախտակներ esp8266 SpiffLibrary- ի համար. սպասարկել HTML ֆայլ, որը խելագարվել է
ESP8266 և Visuino ՝ DHT11 peratերմաստիճանի և խոնավության վեբ սերվեր ՝ 12 քայլ
ESP8266 և Visuino. DHT11 peratերմաստիճանի և խոնավության վեբ սերվեր. ESP8266 մոդուլները հոյակապ ցածրակարգ մենակ վերահսկիչներ են ՝ ներկառուցված Wi-Fi- ով, և ես դրանց մասին արդեն պատրաստել եմ մի շարք ցուցումներ: DTH11/DTH21/DTH22 և AM2301 շատ տարածված համակցված ջերմաստիճան են: և Խոնավության Arduino սենսորներ, և ես որոշեցի
Տեղադրեք և տեղադրեք Shinken ցանցի մոնիտորը Raspberry Pi- ում ՝ 14 քայլ
Տեղադրեք և տեղադրեք Shinken ցանցի մոնիտորը Raspberry Pi- ի վրա. Այսպիսով, մի քանի տարի առաջ ես անցա տնային ցանցի մոնիտորինգի այլ եղանակներին: Բացի այդ, php5- ը կարծես թե մատչելի չէ: Այսպիսով, խնդրում ենք մի օգտագործեք այս հրահանգը: Տեղադրեք
ESP8266 Thingspeak- ով և DHT11 ձեռնարկով - Վեբ սերվեր ՝ 7 քայլ
ESP8266 Thingspeak- ով և DHT11 ձեռնարկով | Վեբ սերվեր. Այ, ինչ կա, տղերք: Աքարշ այստեղ CETech- ից: Իմ այս նախագիծը ավելի շատ ուսուցման կոր է `հասկանալու բաների հարթակը MQTT- ի գաղափարի հետ միասին, այնուհետև Thingspeak- ը ESP8266- ով օգտագործելու համար: Հոդվածի վերջում մենք
ESP8266 Եղանակի մոնիտորի վեբ սերվեր (Առանց Arduino) ՝ 4 քայլ
ESP8266 Եղանակի մոնիտոր վեբ սերվեր (Առանց Arduino). «Իրերի ինտերնետը» (IoT) օրեցօր դառնում է խոսակցությունների ավելի ու ավելի աճող թեմա: Դա հասկացություն է, որը ոչ միայն ներուժ ունի ազդելու մեր ապրելակերպի, այլև մեր աշխատանքի վրա: Արդյունաբերական մեքենաներից մինչև կրելի սարքեր `օգտագործելով ներկառուցված