Chat about current Lua tools and IDEs

User avatar
By mrluck
#51714 From now on all releases of ESPresso (current and old) will be available at:

UPDATE 2018-09-18
New version is out.
This is the very first version that allows not only uploading but also downloading any kind of files from your ESP module. Also from now on all data transfers utilize NodeMCU object file model.

Just like last time versions for Windows (32 & 64 bit) Linux (amd64, i386 and armhf) are released at the same time. All versions are available at the download page.

All the changes are reflected in updated documentation which explains them in details.

UPDATE 2018-05-04
New version of ESPresso (v. is out.

This is the first time when versions for all platforms (Windows & Linux) are released at the same time. Additionally two new user requested platforms are available: Linux/i386 and Linux/armhf. All versions are available at the download page.

This release introduces many changes and improvements. Probably the most important among them is possibility to transfer any kind of file to the ESP (not only lua sources). On the local side you can now parse and even compile (on Linux) lua files prior to transferring them to your microcontroller.

All the changes are reflected in updated documentation which explains them in details.
  • Added possibility to transfer any file to ESP (no longer lua source files only)
  • Added lua source parse function of local files (requires luac compiler)
  • Added lua source compilation of local files (requires luac cross-compiler)
  • ESP Flash space usage indicator (inspired by Amiga Workbench 1.3 disk space usage indicator)
  • Local and ESP directories are now alphabetically sorted
  • NodeMCU version is now displayed upon connection
  • Redesigned output window, cleaned output messages
  • Fixed cursor position after file operations
  • Command buttons are now inactive during file operations
  • Fixed displaying timestamps for files created exactly at midnight
  • Redesigned ESP communication protocol handling
  • Directory sending attempt throws no errors anymore (but due to SPIFSS limitations is still not possible)

UPDATE 2017-08-14
New Windows version (v. is out!
This release that catches up with changes that were already available in Linux ESPresso. Additionally NodeMCU firmware type autodetection (INT / FLOAT) was introduced to customise LuaSrcDiet commands. This should be useful for integer firmware users since default LuaSrcDiet settings may produce results unreadable for integer NodeMCU.

New ESPresso introduces configurable ESP reset button and some connection procedures improvements.

This edition includes new, extensive documentation (created with Sphinx) which is also available online.

  • Fixed deleting of temporary files used by LuaSrcDiet
  • Automatic integer/float NodeMCU firmware recognition
  • Added distinct LuaSrcDiet options for integer and float NodeMCU firmwares
  • Extensive documentation created
  • Configurable ESP reset function
  • Connection timeouts and retries
UPDATE 2017-02-05:
New Linux version (v. is out! It mainly catches last changes in Windows version up but also introduces some new features and fixes some bugs:
  • Binary transfer and interpreted LuaSrcDiet. Please note that ESPresso package contains LuaSrcDiet that runs on Lua 5.1.
  • Fixed bug that could make in rare circumstances some files missing during the first directory scan after connect.
  • New rename dialog box. Inspired by Freecommander rename window. It has a NodeMCU specific feature as well: you can rename both lc and lua filea with one click.
  • Some user interface bug fixes and improvements - more keyboard shortcuts.
  • Added possibility to pass optional parameters to LuaSrcDiet (ini file entry). It may be useful to add --no-opt-numbers if you have integer version of NodeMCU.

UPDATE 2016-12-09:
I'm glad to announce that new version of ESPresso (v. is out. It introduces some important features and improvements as well as some bug fixes:
  • New binary transfer mode that provides 100% carbon copy of source file on ESP side. This is the most important change which solves problems with CR/LF transfer.
  • Redesigned LuaSrcDiet compression. Now it uses interpreted script along with Lua interpreter. Also an up-to-date version of LuaSrcDiet is included in the package.
  • Source file preview with Lua syntax highlighting. That's something I was really missing in the previous release. Now you can quickly review you file before transfer to ESP.
  • Some user interface bugfixes and improvements.

I'd like to thank jankop for his reviews of ESPResso and beta-testing.
This release contains Win32 and Win64 binaries. Linux update will be released soon.

UPDATE 2016-08-09:
Linux 64 binary for gtk2 added. Tested under Kubuntu 14.10.


I’m currently developing a motorized awning driver project (which I hope I’ll be ready to present in couple of weeks) that uses ESP8266 and NodeMCU. The problem I had was that to physically access the driver itself a ladder was necessary. Not a big deal unless I wanted to update my Lua files couple of times a day.

After some research I found a solution. Unfortunately it involves some additional software (for virtual COM ports) and even though I was able to communicate with ESP via console, uploading Lua files using standard means (ESPlorer, LuaLoader) in most cases ended with failures.

That’s why I decided to write my own piece of software which I (obviously) named 'ESPresso'.

You may say it’s another Lua uploader but it differs from ESPlorer or LuaLoader in some crucial aspects:
  • First of all: it connects to ESP directly over TCP/IP port (in other words – over WiFi). It’s not using any serial port (physical or virtual). No additional software on computer side is required. The only thing you need is to run the daemon script on the ESP side (standard script from NodeMCU docs that redirects serial output to TCP – see below for details).
  • It represents a two pane filemanager approach. It’s not trying to be an IDE. It’s designed to effectively send files to ESP, compile them and run. All these things are IMHO only an addition in other state-of-the-art ESP managers. For ESPresso file management on ESP is the main task.
  • It can “diet” uploaded files using “LuaSrcDiet” on the fly.
  • It’s equipped with a built-in ADC monitor with simple graph.

ESPresso main window

ESPresso ADC monitor.

ESPresso rename dialog box.

Sounds good? Ok. Here is what you need:
  1. A computer. Binaries for Windows (both 32 or 64 bit) and Linux (amd64, i386, armhf, gtk2) are provided.
  2. An ESP8266 working under NodeMCU (the newer the better). You need to run a 'telnet' script. You may use the one from NodeMCU examples or use your own (it should simply redirect all serial output to TCP socket and grab all the data from the socket and send it to the NodeMCU interpreter). CAUTION: Telnet script from old NodeMCU docs which was copied to many websites is NOT working properly with new NodeMCU versions. Use the one from Github.

For more details and instructions please consult the documentation.

This software was written as a commodity for my ESP project. I’ve got some ideas for its further development so if you like ESPresso just let me know by posting here to encourage me to keep working on it.



Downloads of all releases of ESPresso (current and old) are be available at:
Last edited by mrluck on Tue Sep 18, 2018 4:53 am, edited 6 times in total.
User avatar
By mrluck
#52294 Hi AH SH,

AH SH wrote:Im a bit confused
in the beggining, do I need to connect the esp8266 module to computer using cable or not??
if not how do I upload telnet script?

Yes - you need to connect the ESP8266 module to the computer using cable - at least once. You need to upload the telnet script (using standard means) and also make sure that it's running (you can add dofile('telnet.lua') to you 'init.lua' script.
Another thing is that ESP needs to be in your network and have an IP address assigned.

Best regards,

User avatar
By jankop
#54430 Hi Lukasz,
I tried the ESPresso and it worked on the first time. I must thank you for the Windows version , I do not use Linux . I had a problem only when using DIET. After transferring have been the files damaged. It still my homework , because I have no experience with LuaSrcDiet.
Because my frequent applications are tiny ESP8266 web servers , I will try to do a mechanism to incorporate WiFi Upload in to them. I already have some idea.

It's simple , clear and useful, thanx for your good job.

Program LuaSrcDiet me causing errors . Clears characters space that are missing for Lua interpreter.

original row:
client:send(string.sub(buff1,1, (#buff1 > 1460) and 1460 or #buff1),
row compresed with DIET:
client:send(string.sub(buff1,1,(#buff1>1460)and 1460or#buff1),
error for compresed row:
stdin:1: baro07T3_.lua:104: malformed number near '1460or'