4refr0nt / luatool

Small python script for loading init.lua to ESP8266 nodemcu firmware
http://esp8266.ru/
GNU Lesser General Public License v3.0
311 stars 96 forks source link

luatool

Join the chat at https://gitter.im/4refr0nt/luatool

Tool for loading Lua-based scripts from file to ESP8266 with nodemcu firmware

Summary

Other projects

Another my project for NodeMCU: ESPlorer Integrated Development Environment (IDE) for ESP8266 developers

Requirements

python 2.7, pyserial (as for esptool)

Discuss

http://esp8266.ru

Changelog

v0.6.4

v0.6.3

v0.6.2

v0.6.1

v0.6

v0.5

v0.4

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)

dofile("main.lua")

connects to your AP and displays MCU's IP address

> dofile("main.lua")
> IP:   192.168.1.99

Examples:

./luatool.py --port COM4 --src file.lua --dest main.lua --baud 9600

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:

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.

Examples:

./luatool.py --ip 192.168.12.34 --src file.lua --dest test.lua --dofile