Kazalo:
- 1. korak: Kaj potrebujete
- 2. korak: Ustvarite skladišče za shranjevanje binarnih vdelanih programov
- 3. korak: Ustvarite binarne datoteke
- 4. korak: Ustvarite tok strežnika
- 5. korak: Dodajte logiko strežnika
- 6. korak: Dodajte kodo v skico, da zahtevate posodobitev
- 7. korak: Na koncu zaženite posodobitev
Video: Nastavitev strežnika za samodejno posodabljanje ESP8266: 7 korakov
2024 Avtor: John Day | [email protected]. Nazadnje spremenjeno: 2024-01-30 12:08
Mnogi ljudje zdaj uporabljajo ESP8266 v številnih oblikah (ESP-01S, Wemos D1, NodeMCU, Sonoff itd.) Za sisteme avtomatizacije doma. Če napišete svojo kodo (tako kot jaz), posodabljanje vsakega od teh ločeno tudi prek OTA (po zraku) postane nekoliko dolgočasno.
Moj sistem, na primer, ima 8x ESP-01S, 6x Wemos D1, 4x Sonoff Basic 12x Sonoff S20, 2x Sonoff SV in NodeMCU, ki imajo skupno kodo, tako da je to 33 naprav, ki jih je treba posodobiti, ko naredim preprosto kodo spremeniti.
Obstaja pa lažji način: "strežnik za posodobitve". Odlično jedro Arduino IDE + ESP8266 ima knjižnico, ki opravi večino dela (ESP8266httpUpdate), vendar morate vedeti, kako nastaviti svoj strežnik, da bo deloval.
Ta navodila vam pokažejo, kako uporabljate strežnik NODE-RED, vendar ista logika velja za katero koli strežniško tehnologijo po vaši izbiri, npr. Apache + PHP itd
1. korak: Kaj potrebujete
- Arduino IDE
- Jedro ESP8266
- Katera koli plošča za razvijalce ESP8266 z 1 M ali več bliskovnega pomnilnika RAM
- Spletni strežnik (tudi skromni malinov Pi bo - to uporabljam)
- (izbirno) orodje mkspiffs, če želite samodejno posodobiti sliko datotečnega sistema SPIFFS
2. korak: Ustvarite skladišče za shranjevanje binarnih vdelanih programov
Na mojem strežniku imam mapo z imenom/home/pi/trucFirmware, ki vsebuje različne vdelane programske opreme in slike SPIFFS
Za vsako vrsto strojne opreme vzdržujem ločeno binarno datoteko (iz ene izvorne datoteke z nekaj #defines) in ko je nova izdaja pripravljena, za vsako ciljno napravo uporabim ukaz menija Arcino "skica/izvoz kompilirane binarne datoteke" za vsako ciljno napravo. čeprav obstaja 5 različnih vrst strojne opreme, obstajata samo dve binarni datoteki SPIFFS: 1M in 4M različica - izdelana z orodjem mkspiffs - saj imajo vse naprave 1M ali 4M bliskavico.
3. korak: Ustvarite binarne datoteke
Z možnostjo menija Arduino IDE skica/Izvoz sestavljenega binarnega dokumenta ustvarite vdelano programsko opremo, ki bo naložena v napravo, ko to zahteva od strežnika za posodobitve.
Če potrebujete binarno datoteko SPIFFS, boste morali namestiti orodje mkspiffs.
Ko ga imate, je izdelava binarne datoteke SPIFFS preprosta. Imam enovrstično paketno datoteko za različico 1M, ki za parameter vzame številko različice (%1)
mkspiffs -c podatki/ spiffs_%1_1M.bin
in še ena za različico 4M:
mkspiffs -p 256 -b 8192 -s 0x0FB000 -c podatki/ spiffs_%1_4M.bin
Nato vse prevedene binarne datoteke in binarne datoteke SPIFFS kopiram v skladišče
4. korak: Ustvarite tok strežnika
Uporabljam NODE-RED, vendar bo preprosta logika enaka v kateri koli strežniški tehnologiji / jeziku.
a) Določite URL, ki bo poslušal zahtevo ESP8266httpUpdate. Moj raspberryPi serevr je na 192.168.1.4 in posluša na vratih 1880 za /update z dodanim tipom strojne opreme. Torej, če bom zahteval binarno datoteko za Wemos D1 Mini, se URL konča kot:
192.168.1.4:1880/update/d1_mini
b) Ustvarite kodo za naslednjo logiko:
ESP8266: "Živjo, uporabljam različico vdelane programske opreme a.b.c, ali imaš novejšo različico?" Strežnik: "Naj vidim … ah ja, imam a.b.d - tukaj je …"
Če obstaja novejša različica, jo strežnik samo pošlje kot obremenitev binarnih podatkov v odgovoru http. Razred ESP8266httpUpdate zapleteno kopira binarno datoteko v pomnilnik in spremeni zagonski naslov vdelane programske opreme v novo kodo, kot pa (če se zahteva) ponovni zagon naprave za zagon nove kode.
Če na drugi strani ni višje različice, odgovori z napako http 304, ki dejansko pravi: "Nimam ničesar za vas" in vaša koda še naprej deluje kot običajno.
5. korak: Dodajte logiko strežnika
Prvo vozlišče v toku "posluša" zahtevo http za url https://192.168.1.4:1880/update z dodanim tipom naprave. To posreduje v vozlišče funkcije "Konstruiraj iskalno pot", ki ima naslednjo kodo javascript:
msg.type = msg.req.params.type; var h = msg.req.headers; msg.version = h ["x-esp8266-različica"];
msg.mode = h ["x-esp8266-mode"];
if (msg.mode == "skica") {msg.payload = "/home/pi/trucFirmware/*. ino."+msg.type+". bin"; } else {var sz = h ['x-esp8266-size-chip']; msg.payload = "/home/pi/trucFirmware/spiffs _*_"+(sz/1048576)+"M.bin"; } return msg;
To samo nastavi ustrezno pot z nadomestnim znakom za funkcijo sys, ki sledi, ki se preprosto zažene
ls - r
Izhod se nato vnese v vozlišče funkcije "Primerjaj različice":
var f = msg.payload.split ("\ n") [0]; msg.filename = f;
if (msg.mode == "skica") {
f = f.replace ("/home/pi/trucFirmware/truc_", ""); f = f.replace (". ino."+msg.type+". bin", ""); } else {f = f.replace ("/home/pi/trucFirmware/spiffs_", ""); f = f.replace (/_ / dM \.bin/, ""); }
if (msg.verzija <f) {
node.warn ("potrebna nadgradnja");
node.warn ("vrne"+msg. ime datoteke); return msg; } node.warn ("brez nadgradnje"); msg.statusCode = 304; msg.payload = ;
return msg;
Preklopno vozlišče nato zagotovi, da je poslano sporočilo 304 "posodobitev ni potrebna" ali pa se vrne dejanska nova binarna datoteka in jo pošlje nazaj v napravo.
6. korak: Dodajte kodo v skico, da zahtevate posodobitev
Skica mora vsebovati naslednjo kodo, da se bo samodejno posodobila, ko naslednjič povečate številko različice:
#vključi
#define TRUC_VERSION "0_4_99"
#define SPIFFS_VERSION "0_5_0"
// THIS_DEVICE je nastavljen prej, odvisno od različnih časov prevajanja //, ki sčasoma definirajo tip hw, npr. #define THIS_DEVICE "d1_mini" const char * updateUrl = "https://192.168.1.4:1880/update/" THIS_DEVICE; // to je moj strežnik maline Pi, 1880 je privzeto NODE-RED vrata // /update je url, ki sem ga izbral za "poslušanje" strežnika, sledi vrsta naprave … bool actualUpdate (bool sketch = false) {String msg; t_httpUpdate_return ret; ESPhttpUpdate.rebootOnUpdate (napačno); if (skica) {ret = ESPhttpUpdate.update (updateUrl, TRUC_VERSION); // **************** To je vrstica, ki "posluje"} drugače {ret = ESPhttpUpdate.updateSpiffs (updateUrl, SPIFFS_VERSION); } če (ret! = HTTP_UPDATE_NO_UPDATES) {če (ret == HTTP_UPDATE_OK) {
Serial.printf ("UPDATE SUCCEEDED");
vrni true; } drugače {if (ret == HTTP_UPDATE_FAILED) {
Serial.printf ("Nadgradnja ni uspela");
}}} return false; }
7. korak: Na koncu zaženite posodobitev
Ob zagonu ali morda kot odgovor na sporočilo MQTT (tako kot jaz) zaženite naslednjo kodo:
if (_actualUpdate (true)) ESP.restart ();
// ali za SPIFFS …
if (_actualUpdate (false)) ESP.restart ();
Naprava se bo posodobila in znova zagnala najnovejšo kodo s strežnika. Zame je veliko enostavnejše kot ročno posodabljanje 33 naprav!
Veliko več koristnih informacij o avtomatizaciji doma, IOT -u in programiranju ESP8266 najdete na mojem blogu
Priporočena:
Enostavno samodejno in brezplačno samodejno in brezplačno dodajte Google Zemljevide v svoje Google Preglednice: 6 korakov
Preprosto samodejno in brezplačno dodajte Google Zemljevide v svoje Google Preglednice: tako kot mnogi ustvarjalci sem zgradil nekaj projektov za sledenje GPS. Danes si bomo lahko hitro predstavili GPS točke naravnost v Google Preglednicah brez uporabe zunanjega spletnega mesta ali API -ja. Najboljše od vsega je BREZPLAČNO
WiFi samodejni napajalnik rastlin z rezervoarjem - nastavitev gojenja v zaprtih prostorih/na prostem - samodejno vodne rastline z daljinskim nadzorom: 21 korakov
WiFi samodejni napajalnik rastlin z rezervoarjem - nastavitev gojenja v zaprtih prostorih/na prostem - samodejno vodne rastline z daljinskim nadzorom: V tej vadnici bomo pokazali, kako nastaviti prilagojen sistem za napajanje rastlin v zaprtih prostorih/na prostem, ki samodejno zaliva rastline in ga je mogoče nadzorovati na daljavo s platformo Adosia
Prenosni alarm za preverjanje spletnega strežnika (z uporabo NodeMCU ESP8266): 6 korakov
Prenosni alarm za preverjanje spletnega strežnika (z uporabo NodeMCU ESP8266): Kaj nam pomeni kazalnik padca strežnika/storitve ..? V svetu spletne infrastrukture je veliko … !! Ohraniti moramo vso razpoložljivost naše storitve " ne želim razočarati vaše storitve/strežnika in izgubiti podjetja " Toda včasih postavite
Posodabljanje gonilnika grafične kartice (Windows): 4 koraki
Posodabljanje gonilnika grafične kartice (Windows): Krmarjenje po nastavitvah v računalniku je pogosto zelo zmedeno in frustrirajoče, ko nekaj ne deluje pravilno, kadar in kako mora biti. S tehnologijo se vedno pojavi nekaj novega in izboljšanega, kar je pomembno
Nastavitev strežnika FTP z uporabo programa Filezilla !: 7 korakov
Nastavitev strežnika FTP z uporabo programa Filezilla !: 1. Kaj je strežnik FTP? 2. Zakaj bi ga želel narediti? 1. Protokol za prenos datotek (FTP) je omrežni protokol, ki se uporablja za prenos podatkov iz enega računalnika v drugega prek omrežja, kot je internet. FTP je protokol za prenos datotek za