Obsah:
- Krok 1: Čo potrebujete
- Krok 2: Vytvorte úložisko na uloženie binárnych firmvérov
- Krok 3: Vytvorte binárne súbory
- Krok 4: Vytvorte tok servera
- Krok 5: Pridajte logiku servera
- Krok 6: Pridajte kód do náčrtu a požiadajte o aktualizáciu
- Krok 7: Nakoniec spustite aktualizáciu
Video: Nastavte server automatickej aktualizácie ESP8266: 7 krokov
2024 Autor: John Day | [email protected]. Naposledy zmenené: 2024-01-30 12:01
Mnoho ľudí teraz používa ESP8266 v mnohých prevedeniach (ESP-01S, Wemos D1, NodeMCU, Sonoff atď.) Na systémy domácej automatizácie. Ak napíšete svoj vlastný kód (ako ja), aktualizácia každého z nich oddelene aj prostredníctvom OTA (vzduchom) bude trochu únavné.
Môj vlastný systém má napríklad 8x ESP-01S, 6x Wemos D1, 4x Sonoff Basic 12x Sonoff S20, 2x Sonoff SV a NodeMCU, ktoré zdieľajú spoločný kódový základ, takže je celkovo 33 zariadení, ktoré je možné aktualizovať, keď vytvorím jednoduchý kód. zmeniť.
Existuje však jednoduchší spôsob: „Aktualizačný server“. Vynikajúce jadro Arduino IDE + ESP8266 má knižnicu, ktorá vám poskytne väčšinu práce (ESP8266httpUpdate), ale musíte vedieť, ako si nastaviť vlastný server, aby fungoval.
Tento návod vám ukáže, ako používať server NODE-RED, ale rovnaká logika platí pre každú serverovú technológiu podľa vášho výberu, napr. Apache + PHP atď
Krok 1: Čo potrebujete
- Arduino IDE
- Jadro ESP8266
- Akákoľvek doska pre vývojárov ESP8266 s 1 MB alebo viac flash RAM
- Webový server (aj pokorný malinový Pi to urobí - to používam)
- (voliteľné) nástroj mkspiffs, ak chcete automaticky aktualizovať obraz systému súborov SPIFFS
Krok 2: Vytvorte úložisko na uloženie binárnych firmvérov
Na svojom serveri mám priečinok s názvom/home/pi/trucFirmware, ktorý obsahuje rôzne firmvérové zariadenia a obrázky SPIFFS
Udržujem samostatný binárny súbor pre každý typ hardvéru (z jedného zdrojového súboru s niekoľkými #definíciami) a keď je pripravené nové vydanie, použijem pre každé cieľové zariadenie príkazový lístok Arduino IDE „sketch/Export compiled Binary“. aj keď existuje 5 rôznych typov hardvéru, existujú iba dva binárne súbory SPIFFS: 1M a 4M verzia - vytvorená pomocou nástroja mkspiffs - pretože všetky zariadenia majú buď 1M alebo 4M flash.
Krok 3: Vytvorte binárne súbory
Pomocou možnosti skica/Exportovať kompilované binárne súbory v ponuke Arduino IDE vytvorte firmvér, ktorý sa nahrá do zariadenia, keď o to požiada aktualizačný server.
Ak potrebujete binárny súbor SPIFFS, budete si musieť nainštalovať nástroj mkspiffs.
Akonáhle to máte, zostavenie binárneho súboru SPIFFS je jednoduché. Mám jednoriadkový dávkový súbor pre verziu 1M, ktorý ako parameter berie číslo verzie (%1)
mkspiffs -c údaje/ spiffs_%1_1M.bin
a ďalší pre verziu 4M:
mkspiffs -p 256 -b 8192 -s 0x0FB000 -c data/ spiffs_%1_4M.bin
Potom skopírujem všetky skompilované binárne súbory a binárne súbory SPIFFS do úložiska
Krok 4: Vytvorte tok servera
Používam NODE-RED, ale jednoduchá logika bude rovnaká pre každú serverovú technológiu / jazyk.
a) Definujte adresu URL, ktorá bude počúvať žiadosť ESP8266httpUpdate. Môj server raspberryPi serevr je na 192.168.1.4 a počúva na porte 1880 /aktualizuje s pripojeným typom hardvéru. Ak teda budem požadovať binárku pre Wemos D1 Mini, adresa URL skončí takto:
192.168.1.4:1880/update/d1_mini
b) Vytvorte kód na zvládnutie nasledujúcej logiky:
ESP8266: „Ahoj, používam verziu firmvéru a.b.c., máš novšiu verziu?" Server: "Uvidím … ah áno, mám a.b.d - je to tu …"
Ak existuje novšia verzia, server ju pošle ako načítanie binárnych údajov v odpovedi http. Trieda ESP8266httpUpdate robí náročnú časť kopírovania binárnej pamäte do pamäte, pričom mení štartovaciu adresu firmvéru na nový kód, než (ak je to potrebné) reštartuje zariadenie, aby spustilo nový kód.
Ak na druhej strane neexistuje vyššia verzia, odpovie chybou http 304, ktorá v skutočnosti hovorí: „Nemám pre teba nič“a váš kód pokračuje v normálnom spustení.
Krok 5: Pridajte logiku servera
Prvý uzol v toku „počúva“požiadavku http na adresu URL https://192.168.1.4:1880/update s pripojeným typom zariadenia. Odovzdá to funkčnému uzlu „Vytvoriť vyhľadávaciu cestu“, ktorý má nasledujúci kód JavaScript:
msg.type = msg.req.params.type; var h = msg.req.headers; msg.version = h ["x-esp8266-verzia"];
msg.mode = h ["x-esp8266-mode"];
if (msg.mode == "sketch") {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"; } vrátiť správu;
Týmto sa nastaví príslušná cesta so zástupnými znakmi pre nasledujúcu funkciu sys, ktorá sa jednoducho spustí
ls - r
Výstup je potom vedený do funkčného uzla „Porovnať verzie“:
var f = msg.payload.split ("\ n") [0]; msg.filename = f;
if (msg.mode == "skica") {
f = f.replace ("/home/pi/trucFirmware/truc_", ""); f = f.náhrada (". ino."+typ správy+". bin", ""); } else {f = f.replace ("/home/pi/trucFirmware/spiffs_", ""); f = f.náhrada (/_ / dM \.bin/, ""); }
if (msg.version <f) {
node.warn („je potrebná aktualizácia“);
node.warn ("vráti"+msg.filename); vrátiť správu; } node.warn („žiadna aktualizácia“); msg.statusCode = 304; msg.payload = ;
vrátiť správu;
Prepínací uzol potom zaistí, aby sa buď odoslala správa 304 „nie je potrebná žiadna aktualizácia“, alebo aby bol vrátený a odoslaný späť do zariadenia skutočný nový binárny súbor.
Krok 6: Pridajte kód do náčrtu a požiadajte o aktualizáciu
Skica musí mať zahrnutý nasledujúci kód, aby sa automaticky aktualizoval pri ďalšom zvýšení čísla verzie:
#zahrnúť
#define TRUC_VERSION "0_4_99"
#define SPIFFS_VERSION "0_5_0"
// TOTO_ZARIADENIE je nastavené skôr v závislosti od rôznych definícií času kompilácie //, ktoré nakoniec definujú typ hw, napr. #define THIS_DEVICE "d1_mini" const char * updateUrl = "https://192.168.1.4:1880/update/" THIS_DEVICE; // toto je môj server Raspberry Pi, 1880 je predvolený NODE-RED port // /aktualizácia je adresa URL, ktorú som vybral na „počúvanie“servera, za ktorou nasleduje typ zariadenia… bool actualUpdate (bool sketch = false) {String msg; t_httpUpdate_return ret; ESPhttpUpdate.rebootOnUpdate (false); if (skica) {ret = ESPhttpUpdate.update (updateUrl, TRUC_VERSION); // ***************** Toto je riadok, ktorý „robí biznis“} else {ret = ESPhttpUpdate.updateSpiffs (updateUrl, SPIFFS_VERSION); } if (ret! = HTTP_UPDATE_NO_UPDATES) {if (ret == HTTP_UPDATE_OK) {
Serial.printf ("UPDATE SUCCEEDED");
návrat true; } else {if (ret == HTTP_UPDATE_FAILED) {
Serial.printf („Inovácia zlyhala“);
}}} return false; }
Krok 7: Nakoniec spustite aktualizáciu
Pri štarte systému alebo možno ako odpoveď na správu MQTT (ako ja) spustite nasledujúci kód:
if (_actualUpdate (true)) ESP.restart ();
// alebo pre SPIFFS …
if (_actualUpdate (false)) ESP.restart ();
Zariadenie sa samo aktualizuje a reštartuje pomocou najnovšieho kódu zo servera. Je to pre mňa oveľa jednoduchšie ako manuálna aktualizácia 33 zariadení!
Mnoho ďalších užitočných informácií o domácej automatizácii, IOT a programovaní ESP8266 nájdete na mojom blogu
Odporúča:
Xenónová plazmová lampa + AKTUALIZÁCIE !: 6 krokov
Xenónová plazmová lampa + AKTUALIZÁCIE !: Najprv s tým chcem začať …*VŽDY SI PREČÍTAJTE CELÝ POKYN, KEĎ SI TO VYROBÍTE, alebo SI TO MÔŽETE ĽUTOVAŤ!*Tento návod obsahuje vysoké napätie a ostré nástroje, preto buďte vždy opatrní.*Ak nie sú schopní to urobiť bezpečným spôsobom,
Nastavte si vlastný server na sledovanie GPS na Raspberry Pi: 8 krokov
Nastavte si vlastný server na sledovanie GPS na Raspberry Pi: V tomto projekte vám ukážem, ako nastaviť vlastný server na sledovanie GPS na Raspberry Pi. Nemusí to byť Raspberry pi, pretože softvér, ktorý budeme používať pre sledovací server, je k dispozícii pre Windows a Linux ako
Zabezpečené pripojenie SSH / SCP z Raspberry Pi na cloudový server na zálohovanie a aktualizácie: 3 kroky
Zabezpečené pripojenie SSH / SCP z Raspberry Pi na cloudový server na zálohovanie a aktualizácie: Účelom tohto pokynu je ukázať vám, ako sa automaticky a bezpečne pripojiť z vášho Raspberry Pi na vzdialený cloudový server (a naopak), aby ste mohli vykonávať zálohy a aktualizácie atď. Na to použijete páry kľúčov SSH, ktoré obviažu
DIY - svetlo automatickej garáže: 7 krokov
DIY - Automatické svetlo v garáži: Stalo sa vám to niekedy? Vrátili ste sa z romantickej večere a keď otvoríte dvere brány v garáži, zistíte, že ste nechali zapnuté osvetlenie garáže. Strávili ste pár hodín vonku so svojou partnerkou, aby ste na ňu urobili dojem, a celý čas
Nastavte si vlastný webový server!: 12 krokov
Vytvorte si vlastný webový server!: Chceli ste mať niekedy miesto, kde by ste mohli ukladať svoje súbory a mať k nim prístup kdekoľvek, kde máte internetové pripojenie? Povedzte, že chcete mať k dispozícii svoju hudobnú knižnicu pre prípad, že by ste chceli dať pieseň jednému zo svojich priateľov, alebo by ste chceli