add TCP as possible transport to connect to the module using the supplied telnet server code
add --id/-i to query the ID of a module
add --delete to remove a given file from the module
v0.6.3
fix download bug
v0.6.2
added support for nested strings
added check to verify the UART buffer will not overflow.
v0.6.1
put short versions of arguments back, see issue #2
flush serial port, fixes issue #1
v0.6
switched to argparse from getopts, renamed some arguments
removed call-home from main.lua
added --verbose option to show debugging
added comments, fixed some grammar, updated README
chmod 755'd the script so its runnable on POSIX
checked with nodemcu 0.9.4 20141222
v0.5
add new option -r, --restart : auto restart module, send command "node.restart()", after file load
add new option -d, --dofile : auto run, send command "dofile('file')", after file load
delete line "lua script loaded by luatool" for correct line number, lines number now equal lines number in original file
add 0.3 sec delay after write
v0.4
now check proper answer from NodeMCU after send data.
After send string we expect echo line, if not got it, then error message displayed "Error sending data to LuaMCU"
if lua interpreter error received, then error message displayed "ERROR from LUA interpreter lua:..."
add heap info and chip id to example file init.lua
some changes in example file main.lua
Run
Typical use:
Edit file init.lua and set SSID and MasterPassword
Then disconnect any terminal programm, and at command prompt type
./luatool.py --port /dev/ttyUSB0 --src init.lua --dest init.lua --verbose
Downloader start
Set timeout 3
Set interCharTimeout 3
Stage 1. Deleting old file from flash memory
->file.remove("init.lua") -> ok
.....................................
->file.close() -> ok
--->>> All done <<<---
./luatool.py
->file.open("main.lua", "w") -> ok
->file.close() -> ok
->file.remove("main.lua") -> ok
->file.open("main.lua", "w+") -> ok
->file.writeline([[tmr.alarm(0, 1000, 1, function()]]) -> ok
->file.writeline([[if wifi.sta.getip() == nil then]]) -> ok
->file.writeline([[print("Connecting to AP...")]]) -> ok
->file.writeline([[else]]) -> ok
->file.writeline([[print('IP: ',wifi.sta.getip())]]) -> ok
->file.writeline([[tmr.stop(0)]]) -> ok
->file.writeline([[end]]) -> ok
->file.writeline([[end)]]) -> ok
->file.flush() -> ok
->file.close() -> ok
--->>> All done <<<---
Connect you terminal program and send command (or you can use --restart option, when loading file init.lua)
node.restart()
after reboot:
lua script loaded by luatool 0.4
init.lua ver 1.2
set mode=STATION (mode=1)
MAC: 18-FE-34-98-D4-B5
chip: 10015925
heap: 18464
set wifi
NodeMcu 0.9.2 build 20141125 powered by Lua 5.1.4
send command (or you can use --dofile option, when loading file main.lua)
If use --dest option with parameter "init.lua" - autostart init.lua after boot.
Be carefully about bugs in lua-script - may cause a boot loop. Use this option after full testing only.
Running without any parameters: load file "main.lua" via port /dev/ttyUSB0:9600 and place code into "main.lua" file into flash.
./luatool.py
after loading file to flash you can connect any terminal programm to ESP8266 and type:
dofile("main.lua")
for executing you lua script
If you want load and autoexecute file main.lua, command dofile("main.lua"), you can use --dofile option
./luatool.py --dofile
Typically, place wifi.setmode, wifi.sta.config commands to init.lua file for connecting to you AP with low risk of boot loop, and other code place to main.lua for manually start and debug.
Alternative use:
This requires a nodemcu based module already configured to meet the following conditions:
the module is accessible via TCP/IP
the telnet server (file: telnet_srv.lua) is running
Now the option --ip IP[:PORT] enables you to specify an IP and optionally a port (if changed for the telnet server)
that will be used to communicate with the module via TCP/IP.
请发表评论