![Nastavení serveru automatické aktualizace ESP8266: 7 kroků Nastavení serveru automatické aktualizace ESP8266: 7 kroků](https://i.howwhatproduce.com/images/003/image-6895-53-j.webp)
Obsah:
2025 Autor: John Day | [email protected]. Naposledy změněno: 2025-01-23 14:38
![Nastavte server automatické aktualizace ESP8266 Nastavte server automatické aktualizace ESP8266](https://i.howwhatproduce.com/images/003/image-6895-54-j.webp)
Mnoho lidí nyní používá ESP8266 v mnoha podobách (ESP-01S, Wemos D1, NodeMCU, Sonoff atd.) Pro systémy domácí automatizace. Pokud napíšete svůj vlastní kód (stejně jako já), bude aktualizace každého z nich samostatně i prostřednictvím OTA (bezdrátově) trochu zdlouhavé.
Můj vlastní systém má například 8x ESP-01S, 6x Wemos D1, 4x Sonoff Basic 12x Sonoff S20, 2x Sonoff SV a NodeMCU, které sdílejí společnou kódovou základnu, takže celkem 33 zařízení se aktualizuje, když vytvořím jednoduchý kód změna.
Existuje však jednodušší způsob: „Aktualizační server“. Vynikající jádro Arduino IDE + ESP8266 má knihovnu pro většinu práce (ESP8266httpUpdate), ale potřebujete vědět, jak nastavit vlastní server, aby fungoval.
Tento Instructable vám ukáže, jak používat server NODE-RED, ale stejná logika platí pro jakoukoli serverovou technologii podle vašeho výběru, např. Apache + PHP atd
Krok 1: Co potřebujete
- Arduino IDE
- Jádro ESP8266
- Jakákoli deska ESP8266 pro vývojáře s 1M nebo více flash RAM
- Webový server (i skromný malinový Pi to udělá - to používám)
- (volitelně) nástroj mkspiffs, pokud chcete automaticky aktualizovat bitovou kopii systému souborů SPIFFS
Krok 2: Vytvořte úložiště pro uložení binárních firmwaru
![Vytvořte úložiště pro uložení binárních firmwaru Vytvořte úložiště pro uložení binárních firmwaru](https://i.howwhatproduce.com/images/003/image-6895-55-j.webp)
Na mém serveru mám složku s názvem/home/pi/trucFirmware, která obsahuje různé firmwary zařízení a obrázky SPIFFS
Pro každý typ hardwaru udržuji samostatný binární soubor (z jednoho zdrojového souboru s několika #definicemi) a když je připraveno nové vydání, pro každé cílové zařízení použiji příkaz nabídky Arduino IDE „sketch/Export compiled Binary“. Všimněte si toho, že i přestože existuje 5 různých typů hardwaru, existují pouze dva binární soubory SPIFFS: 1M a 4M verze - vytvořená pomocí nástroje mkspiffs - protože všechna zařízení mají buď 1M nebo 4M flash.
Krok 3: Vytvořte binární soubory
Pomocí možnosti skica/Exportovat kompilovaný binární soubor z nabídky Arduino IDE vytvořte firmware, který bude nahrán do zařízení, když o to požádá aktualizační server.
Pokud potřebujete binární soubor SPIFFS, budete muset nainstalovat nástroj mkspiffs.
Jakmile to máte, sestavení binárního souboru SPIFFS je jednoduché. Mám jednořádkový dávkový soubor pro verzi 1M, který bere číslo parametru jako parametr (%1)
mkspiffs -c data/ spiffs_%1_1M.bin
a další pro verzi 4M:
mkspiffs -p 256 -b 8192 -s 0x0FB000 -c data/ spiffs_%1_4M.bin
Poté zkopíruji všechny zkompilované binární soubory a soubory.binary SPIFFS do úložiště
Krok 4: Vytvořte tok serveru
![Vytvořte tok serveru Vytvořte tok serveru](https://i.howwhatproduce.com/images/003/image-6895-56-j.webp)
Používám NODE-RED, ale jednoduchá logika bude stejná pro jakoukoli serverovou technologii / jazyk.
a) Definujte URL, která bude naslouchat žádosti ESP8266httpUpdate. Můj raspberryPi serevr je na 192.168.1.4 a naslouchá na portu 1880 pro /aktualizaci s připojeným typem hardwaru. Pokud tedy budu požadovat binární soubor pro Wemos D1 Mini, adresa URL skončí takto:
192.168.1.4:1880/update/d1_mini
b) Vytvořte kód pro zpracování následující logiky:
ESP8266: „Ahoj, používám verzi firmwaru a.b.c, máš novější verzi?“Server: „Ukaž… ah ano, mám a.b.d - tady to přichází…“
Pokud existuje novější verze, server ji odešle jako zátěž binárních dat v odpovědi http. Třída ESP8266httpUpdate provádí složitou část kopírování binárního souboru do paměti a mění spouštěcí adresu firmwaru na nový kód, než (je -li požadováno) restartováním zařízení pro spuštění nového kódu.
Pokud na druhé straně neexistuje vyšší verze, odpoví chybou http 304, která efektivně říká: „Nemám pro tebe nic“a váš kód pokračuje v normálním provozu.
Krok 5: Přidejte logiku serveru
První uzel v toku „naslouchá“požadavku http na adresu URL https://192.168.1.4:1880/update s připojeným typem zařízení. Předává to funkčnímu uzlu „Vytvořit vyhledávací cestu“, který má následující kód 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 == "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átit zprávu;
Tím se nastaví příslušná cesta se zástupnými znaky pro následující funkci sys, která se jednoduše spustí
ls - r
Výstup je poté veden do funkčního uzlu „Porovnat verze“:
var f = msg.payload.split ("\ n") [0]; msg.filename = f;
if (msg.mode == "sketch") {
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.version <f) {
node.warn („nutná aktualizace“);
node.warn ("vrátí"+msg.filename); vrátit zprávu; } node.warn („žádný upgrade“); msg.statusCode = 304; msg.payload = ;
vrátit zprávu;
Přepínací uzel pak zajistí, že buď bude odeslána zpráva 304 „není nutná aktualizace“, nebo bude vrácen a odeslán zpět do zařízení skutečný nový binární soubor.
Krok 6: Přidejte kód do skici a požádejte o aktualizaci
Skica musí obsahovat následující kód, aby se automaticky aktualizoval při příštím zvýšení čísla verze:
#zahrnout
#define TRUC_VERSION "0_4_99"
#define SPIFFS_VERSION "0_5_0"
// THIS_DEVICE je nastaven dříve v závislosti na různých definicích času kompilace // které nakonec definují typ hw, např. #define THIS_DEVICE "d1_mini" const char * updateUrl = "https://192.168.1.4:1880/update/" THIS_DEVICE; // toto je můj Raspberry Pi server, 1880 je výchozí NODE-RED port // /update je url, který jsem si vybral pro server "poslouchat", následovaný typem zařízení … bool actualUpdate (bool sketch = false) {String msg; t_httpUpdate_return ret; ESPhttpUpdate.rebootOnUpdate (false); if (skica) {ret = ESPhttpUpdate.update (updateUrl, TRUC_VERSION); // ***************** Toto je řádek, který "dělá byznys"} 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 ("Upgrade se nezdařil");
}}} return false; }
Krok 7: Nakonec spusťte aktualizaci
Při spuštění nebo snad v reakci na zprávu MQTT (jako já) spusťte následující kód:
if (_actualUpdate (true)) ESP.restart ();
// nebo pro SPIFFS …
if (_actualUpdate (false)) ESP.restart ();
Zařízení se samo aktualizuje a restartuje spuštěním nejnovějšího kódu ze serveru. Je to pro mě mnohem jednodušší než ruční aktualizace 33 zařízení!
Spoustu dalších užitečných informací o domácí automatizaci, IOT a programování ESP8266 najdete na mém blogu
Doporučuje:
Otvírač garážových vrat se zpětnou vazbou pomocí serveru Esp8266 jako webového serveru: 6 kroků
![Otvírač garážových vrat se zpětnou vazbou pomocí serveru Esp8266 jako webového serveru: 6 kroků Otvírač garážových vrat se zpětnou vazbou pomocí serveru Esp8266 jako webového serveru: 6 kroků](https://i.howwhatproduce.com/images/001/image-1735-37-j.webp)
Otvírač garážových vrat se zpětnou vazbou pomocí webového serveru Esp8266 .: Dobrý den, ukážu vám, jak jednoduše vytvořit otvírač garážových vrat.-ESP8266 je kódován jako webový server, dveře lze otevřít kdekoli na světě- zpětnou vazbu, budete vědět, že jsou dveře otevřené nebo zavřené v reálném čase-jednoduché, pouze jedna zkratka pro
Aktualizace HTTPS Redirect verze 2.0 ESP8266 a tabulky Google: 10 kroků
![Aktualizace HTTPS Redirect verze 2.0 ESP8266 a tabulky Google: 10 kroků Aktualizace HTTPS Redirect verze 2.0 ESP8266 a tabulky Google: 10 kroků](https://i.howwhatproduce.com/images/001/image-1676-39-j.webp)
Aktualizujte HTTPS Redirect Verze 2.0 ESP8266 & Google Spreadsheets: V předchozích testech jsme provedli komunikaci modulu ESP8266 a obousměrné odesílání dat do Google Sheet pomocí Google Script, Zpočátku díky Sujay Phadke " electronicguy " tvůrce knihovny HTTPSRedirect
Aktualizace firmwaru Esp8266: 7 kroků
![Aktualizace firmwaru Esp8266: 7 kroků Aktualizace firmwaru Esp8266: 7 kroků](https://i.howwhatproduce.com/images/002/image-4398-44-j.webp)
Aktualizace firmwaru Esp8266: Modul ESP8266 je levný bezdrátový modul. Má SOC (systém na čipu), který je schopen poskytovat wifi jakémukoli mikrořadiči/mikroprocesoru. Existují dva způsoby, jak lze esp8266 použít. Samostatný esp8266 Esp8266 s malinovým pi nebo arduino nebo
Nastavení serveru FTP pomocí Filezilla !: 7 kroků
![Nastavení serveru FTP pomocí Filezilla !: 7 kroků Nastavení serveru FTP pomocí Filezilla !: 7 kroků](https://i.howwhatproduce.com/images/005/image-13320-55-j.webp)
Nastavení FTP serveru pomocí Filezilla !: 1. Co je to FTP server? 2. Proč bych ho chtěl vyrábět? 1. Protokol FTP (File Transfer Protocol) je síťový protokol používaný k přenosu dat z jednoho počítače do druhého prostřednictvím sítě, jako je internet. FTP je protokol pro přenos souborů pro
Přidejte konektor synchronizace počítače ke kabelu Nikon Sc-28 Ttl (použijte automatické nastavení pro blesk na fotoaparátu a spouštění blesků fotoaparátu !!): 4 kroky
![Přidejte konektor synchronizace počítače ke kabelu Nikon Sc-28 Ttl (použijte automatické nastavení pro blesk na fotoaparátu a spouštění blesků fotoaparátu !!): 4 kroky Přidejte konektor synchronizace počítače ke kabelu Nikon Sc-28 Ttl (použijte automatické nastavení pro blesk na fotoaparátu a spouštění blesků fotoaparátu !!): 4 kroky](https://i.howwhatproduce.com/preview/how-and-what-to-produce/10966971-add-a-pc-sync-jack-to-a-nikon-sc-28-ttl-cable-use-auto-settings-for-an-on-camera-flash-and-trigger-off-camera-flashes-4-steps-j.webp)
Přidejte konektor synchronizace počítače ke kabelu Nikon Sc-28 Ttl (použijte automatické nastavení pro blesk na fotoaparátu a spouštění blesků fotoaparátu !!): v tomto návodu vám ukážu, jak odstranit jeden z těchto otravných proprietárních 3pinových konektorů TTL na straně kabelu TTL fotoaparátu Nikon SC-28 a nahraďte jej standardním synchronizačním konektorem pro PC. to vám umožní používat vyhrazený blesk