TLDR; use luatool to upload scripts Lua is a scripting language which has been ported to the ESP8266. After flashing the latest firmware you can connect to the module using
screen /dev/ttyUSB0
You probably want to save your entered code over a restart. Nodemcu offers a whole file api which tells you how to manipulate the virtual filesystem. file api use this example to write into a file
file.open("init.lua", "w+")
file.writeline('foo bar')
file.close()
you can also continue writing to a file with
file.open("init.lua", "w+")
file.writeline('foo bar')
file.close()
to read the file use
file.open("init.lua", "r")
print(file.read('\r'))
file.close()
remove the file with
file.remove("init.lua")
luatool.py A better way is to write files locally on your computer, then upload and execute those files on the module. You can do so by installing luatool. Afterwards you write your files in one folder and change into it. Execute this code // UNTESTED
for file in *.lua; do
luatool.py --port /dev/ttyUSB0 --src $file --dest $file --verbose;
done &&
luatool.py --port /dev/ttyUSB0 -r
This uploads your *.lua files and restarts the module to test the code. making luatool.py more tolerant to errors Uploads frequently fail because of different line endings in Linux, Windows and Mac. I changed luatool.py to accept nearly all combinations by changing the line 48 from
if line+'\r' == data:
to
if line+'\r' == data or line+'\n' == data or line+'\n'+'\r' == data or line+'\r'+'\n' == data or line == data:
Writing Code The file init.lua is executed in startup. I use init.lua as an init script where I register my different modules (i.e. files). Edit init.lua like this
dofile("main.lua")
dofile("wifi.lua")
dofile("httpserver.lua")