Sadržaj:
- Korak 1: Šta vam treba
- Korak 2: Kreirajte spremište za držanje binarnih firmvera
- Korak 3: Kreirajte binarne datoteke
- Korak 4: Kreirajte tok servera
- Korak 5: Dodajte logiku servera
- Korak 6: Dodajte kôd u skicu da biste zatražili ažuriranje
- Korak 7: Konačno, pokrenite ažuriranje
Video: Postavljanje servera za automatsko ažuriranje ESP8266: 7 koraka
2024 Autor: John Day | [email protected]. Zadnja izmjena: 2024-01-30 08:09
Mnogi ljudi sada koriste ESP8266 u mnogim oblicima (ESP-01S, Wemos D1, NodeMCU, Sonoff itd.) Za sisteme kućne automatizacije. Ako napišete vlastiti kod (kao i ja), ažuriranje svakog od njih zasebno čak i putem OTA (bežičnim putem) postaje pomalo zamorno.
Moj vlastiti sistem, na primjer, ima 8x ESP-01S, 6x Wemos D1, 4x Sonoff Basic 12x Sonoff S20, 2x Sonoff SV i NodeMCU koji dijele zajedničku bazu kodova, tako da se ukupno 33 uređaja ažuriraju kada napravim jednostavan kod promjena.
Ali postoji lakši način: "server za ažuriranje". Odlično Arduino IDE + ESP8266 jezgro ima biblioteku za obavljanje većine poslova (ESP8266httpUpdate), ali morate znati kako postaviti vlastiti poslužitelj kako bi funkcionirao.
Ovaj Instructable pokazuje vam kako se koristi NODE-RED server, ali ista logika vrijedi za bilo koju serversku tehnologiju po vašem izboru, npr. Apache + PHP itd
Korak 1: Šta vam treba
- Arduino IDE
- Jezgro ESP8266
- Bilo koja ploča za razvoj ESP8266 sa 1M ili više flash RAM -a
- Web server (čak će i skromni malina Pi raditi - to je ono što ja koristim)
- (opcionalno) mkspiffs alat ako želite automatski ažurirati sliku sistema datoteka SPIFFS
Korak 2: Kreirajte spremište za držanje binarnih firmvera
Na mom serveru imam fasciklu pod nazivom/home/pi/trucFirmware koja sadrži različite firmvere uređaja i slike SPIFFS
Održavam zasebnu binarnu datoteku za svaki tip hardvera (iz jedne izvorne datoteke s nekoliko #defines), a kada je novo izdanje spremno, koristim Arduino IDE naredbu izbornika "sketch/Export compiled Binary" za svaki ciljni uređaj. Imajte na umu da čak iako postoji 5 različitih vrsta hardvera, postoje samo dvije SPIFFS binarne datoteke: 1M i 4M verzija - konstruirana pomoću alata mkspiffs - budući da svi uređaji imaju 1M ili 4M flash.
Korak 3: Kreirajte binarne datoteke
Pomoću opcije menija Arduino IDE skiciraj/izvezi kompajlirani binarni format, kreiraj firmver koji će se učitati na uređaj kada to zatraži od servera za ažuriranje.
Ako vam je potreban SPIFFS binarni dokument, morat ćete instalirati alat mkspiffs.
Nakon što ga imate, izgradnja SPIFFS binarnog programa je jednostavna. Imam jednorednu paketnu datoteku za 1M verziju koja uzima broj verzije kao parametar (%1)
mkspiffs -c data/ spiffs_%1_1M.bin
i još jedan za 4M verziju:
mkspiffs -p 256 -b 8192 -s 0x0FB000 -c podaci/ spiffs_%1_4M.bin
Zatim kopiram sve prevedene binarne datoteke i SPIFFS.binarne datoteke u spremište
Korak 4: Kreirajte tok servera
Koristim NODE-RED, ali jednostavna logika će biti ista na bilo kojoj serverskoj tehnologiji / jeziku.
a) Definirajte url koji će slušati zahtjev ESP8266httpUpdate. Moj raspberryPi serevr je na 192.168.1.4 i sluša na portu 1880 za /ažuriranje sa dodatim tipom hardvera. Dakle, ako ću zatražiti binarni dokument za Wemos D1 Mini, url završava kao:
192.168.1.4:1880/update/d1_mini
b) Kreirajte kôd koji će se nositi sa sljedećom logikom:
ESP8266: "Zdravo, koristim verziju firmvera a.b.c, imate li noviju verziju?" Server: "Da vidim … ah da imam a.b.d - evo stiže …"
Ako novija verzija postoji, poslužitelj je šalje samo kao hrpu binarnih podataka u http odgovoru. Klasa ESP8266httpUpdate obavlja lukavi dio kopiranja binarnog zapisa u memoriju, mijenjajući adresu za pokretanje firmvera u novi kôd, nego (ako se traži) ponovno pokretanje uređaja radi pokretanja novog koda.
S druge strane, ako ne postoji viša verzija, ona odgovara greškom http 304 koja efektivno kaže: "Nemam ništa za vas", a vaš kôd nastavlja raditi normalno.
Korak 5: Dodajte logiku servera
Prvi čvor u toku "sluša" http zahtjev za url https://192.168.1.4:1880/update s dodanim tipom uređaja. To prosljeđuje čvoru funkcije "Construct search path" koji ima sljedeći javascript kod:
msg.type = msg.req.params.type; var h = msg.req.headers; msg.version = h ["x-esp8266-verzija"];
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;
Ovo samo postavlja odgovarajuću putanju sa zamjenskim znakom za funkciju sys koja slijedi, koja se jednostavno izvodi
ls - r
Izlaz se zatim šalje u čvor funkcije "Usporedi verzije":
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 nadogradnja");
node.warn ("vratit će"+msg.filename); return msg; } node.warn ("bez nadogradnje"); msg.statusCode = 304; msg.payload = ;
return msg;
Sklopni čvor tada osigurava da se ili šalje poruka 304 "nije potrebno ažuriranje" ili da se stvarna nova binarna datoteka vrati i pošalje natrag na uređaj.
Korak 6: Dodajte kôd u skicu da biste zatražili ažuriranje
Skica mora imati sljedeći kod uključen kako bi se automatski ažurirala sljedeći put kada povećate broj verzije:
#include
#define TRUC_VERSION "0_4_99"
#define SPIFFS_VERSION "0_5_0"
// THIS_DEVICE se postavlja ranije ovisno o različitim definicijama vremena kompajliranja // koje eventualno definiraju tip hw, npr. #define THIS_DEVICE "d1_mini" const char * updateUrl = "https://192.168.1.4:1880/update/" THIS_DEVICE; // ovo je moj maline Pi server, 1880 je zadani NODE-RED port // /update je url koji sam odabrao za poslužitelj za "preslušavanje", nakon čega slijedi tip uređaja … bool actualUpdate (bool sketch = false) {String msg; t_httpUpdate_return ret; ESPhttpUpdate.rebootOnUpdate (false); if (skica) {ret = ESPhttpUpdate.update (updateUrl, TRUC_VERSION); // **************** Ovo je linija koja "posluje"} else {ret = ESPhttpUpdate.updateSpiffs (updateUrl, SPIFFS_VERSION); } if (ret! = HTTP_UPDATE_NO_UPDATES) {if (ret == HTTP_UPDATE_OK) {
Serial.printf ("UPDATE SUCCEEDED");
return true; } else {if (ret == HTTP_UPDATE_FAILED) {
Serial.printf ("Nadogradnja nije uspjela");
}}} return false; }
Korak 7: Konačno, pokrenite ažuriranje
U vrijeme pokretanja, ili možda kao odgovor na MQTT poruku (kao i ja) pokrenite sljedeći kod:
if (_actualUpdate (true)) ESP.restart ();
// ili za SPIFFS …
if (_actualUpdate (false)) ESP.restart ();
Uređaj će se ažurirati i ponovo pokrenuti s najnovijim kodom s poslužitelja. Meni je to mnogo jednostavnije od ručnog ažuriranja 33 uređaja!
Mnogo korisnijih informacija o kućnoj automatizaciji, IOT -u i programiranju ESP8266 može se pronaći na mom blogu
Preporučuje se:
Blu Media Robot (ažuriranje): 7 koraka
Blu Media Robot (ažuriranje): blu je robot koji radi s makeblock matičnom pločom i malinom za elektroniku za popis dijelova koje možete kupiti od makebloka kao ja na početku, sada imam 3d pisač (wanahoa i3 +) i možete ga preuzeti različitim dijelovima za njihovo štampanje na
Orange Pi Plus 2 - Armbian (na SD kartici ili ugrađenoj memoriji od 16 GB!) - Ažuriranje: 6 koraka
Orange Pi Plus 2 - Armbian (na SD kartici ili ugrađenoj memoriji od 16 GB!) - Ažuriranje: Zdravo svima! Ovo je moj prvi instruktor i engleski nije moj materinji jezik, stoga nemojte biti strogi prema meni. Za početak, narandžasta Pi Plus 2 je divan mali uređaj, baš kao i Raspberry Pi, ali brži! Za Raspberry Pi postoji velika komunikacija
Postavljanje vlastitog servera za praćenje GPS -a na Raspberry Pi: 8 koraka
Postavljanje vlastitog servera za praćenje GPS -a na Raspberry Pi: U ovom projektu ću vam pokazati kako postaviti svoj vlastiti server za praćenje GPS -a na Raspberry pi. Ne mora biti Raspberry pi jer je softver koji ćemo koristiti za poslužitelj za praćenje dostupan i za Windows i Linux
Ažuriranje firmvera Esp8266: 7 koraka
Ažuriranje firmvera Esp8266: Modul ESP8266 je jeftin bežični modul. Ima SOC (sistem na čipu) koji može pružiti WiFi bilo kojem mikro kontroleru/mikroprocesoru. Postoje dva načina na koja se esp8266 može koristiti. Samostalni esp8266 Esp8266 sa malinom pi ili arduino ili
Postavljanje FTP servera pomoću Filezilla !: 7 koraka
Postavljanje FTP servera pomoću Filezilla !: 1. Šta je FTP server? 2. Zašto bih želio napraviti jednu? 1. Protokol za prijenos datoteka (FTP) je mrežni protokol koji se koristi za prijenos podataka s jednog računara na drugi putem mreže, kao što je Internet. FTP je protokol za prijenos datoteka za ex