ESP8266 WiFi OTA Remote File Management (4 / 5 steg)
Steg 4: Den ESP8266 LUA sidan
.Lua filer på ESP8266 göra grovjobbet för parsning av strängarna kommer via fsockets. De catch"" nyttolasten (pl) kommer från webserver och parse instruktioner.
I det här exemplet krävs fyra filer:
- init.lua
- servernode.lua
- wifi_tools.lua
- getStatus.lua
Inledningsvis, har dessa filer skickas till ESP via FTDI och COM-porten.
init.lua, servernode.lua och wifi_tools.lua måste alltid vara i filsystemet på ESP. De måste vara tillgängliga för "dofile()".
Detta är en av de förbehåll som tidigare nämnts.
När ESP stövlar, det måste till stöveln in i en server-läge och det måste kunna komma åt "dofile()" wifi_tools.lua.
Om du "format" registeransvarige, ryggen mot en FTDI och en COM-port. Ja, du kan formatera via WiFi.
Med undantag för "wifi_tools.lua" och "servernode.lua", kan dessa filer tas bort och laddade upp mellan omstarter.
!! "wifi_tools.lua" och "servernode.lua" kan endast skrivas, aldrig bort!
Storleken på "wifi_tools.lua" och "servernode.lua" normalt, får inte överstiga 1200 byte (ASCII-tecken, inklusive blanksteg och radmatningar)
Om "wifi_tools.lua" är större de 1200 byte, det skrivs delvis och kommer att orsaka "panik" När ESP försöker dofile från servernode.lua att lägga till resten av filen.
"servernode.lua" är en generisk TCP server fil, finns koden på webbplatsen NodeMCU api med detta tillägg:
- om string.sub (pl, 0, 11) == "** command **" sedan
- dofile("wifi_tools.lua")
- slutet
- om string.find (pl, "status") sedan
- dofile("getStatus.lua")
- TMR.Delay(250)
- File.Open ("info.lua", "r")
- Conn: send(file.read())
- File.Close("info.lua")
- slutet
Den variabla "pl" är nyttolasten från fsocket anslutningen, detta är den sträng som genereras av PHP filer serversidan.
Om ** command ** finns än datasträng analyseras av wifi_tools.lua för exakta detaljer och kommandon.
"Getstatus.lua" rutin är lite invecklad, men det tillåter oss att se vilka filer som faktiskt på ESP i nära realtid sätt. Det visar också förmågan att skapa och hantera filer dynamiskt.