Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/andidittrich/nodemcu-tool
:wrench: Upload + Manage Lua files on NodeMCU
https://github.com/andidittrich/nodemcu-tool
esp8266 iot lua nodemcu nodemcu-firmware nodemcu-lua serial transfer-files
Last synced: 6 days ago
JSON representation
:wrench: Upload + Manage Lua files on NodeMCU
- Host: GitHub
- URL: https://github.com/andidittrich/nodemcu-tool
- Owner: AndiDittrich
- License: mit
- Created: 2015-12-05T11:59:14.000Z (about 9 years ago)
- Default Branch: master
- Last Pushed: 2024-08-22T06:14:27.000Z (5 months ago)
- Last Synced: 2024-10-30T06:58:38.685Z (3 months ago)
- Topics: esp8266, iot, lua, nodemcu, nodemcu-firmware, nodemcu-lua, serial, transfer-files
- Language: JavaScript
- Homepage: https://www.npmjs.com/package/nodemcu-tool
- Size: 420 KB
- Stars: 316
- Watchers: 10
- Forks: 54
- Open Issues: 9
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGES.md
- License: LICENSE.md
Awesome Lists containing this project
README
[![Build Status](https://travis-ci.org/AndiDittrich/NodeMCU-Tool.svg?branch=master)](https://travis-ci.org/AndiDittrich/NodeMCU-Tool)
NodeMCU-Tool
============
Upload/Download Lua files to your ESP8266/ESP32 module with NodeMCU firmware.**Simple. Command Line. Cross-Platform. File Management. [NodeMCU](http://nodemcu.com/index_en.html).**
```shell
$ npm install nodemcu-tool -g
```![Demo](assets/video.gif)
Tool Summary
-------------
NodeMCU Tool allows you to* Upload Lua files to your ESP8266/ESP32/NodeMCU module
* Upload any file-types (binary save)
* Bulk/Multi file uploads
* Download any file-type (binary save)
* Delete files
* Format the file system
* Simple Serial Terminal to interact with NodeMCU
* Show existing files on your module
* Precompile Lua files live on NodeMCU
* Minimize Lua files before uploading (provided by [luamin](https://www.npmjs.com/package/luamin))
* Use the **NodeMcuConnector API** in your own projects
* Apply Project based configurations
* Hard-Reset the module using DTR/RTS reset circuit (like NodeMCU DEV Kit)
* Run files on NodeMCU and display the outputdirectly from the command line.
*Successful tested on Windows10, Debian 8,9,10 and Ubuntu 14,15,16,17,18 - works out of the box without any tweaks*
Compatibility
-------------
The following NodeMCU firmware versions are verified**ESP8266**
* NodeMCU Lua 1.4
* NodeMCU Lua 1.5.1
* NodeMCU Lua 1.5.4
* NodeMCU Lua 3.0.0**ESP32**
* support (dev-esp32.latest)---------------------------------------
Related Documents
-----------------* [FAQ](FAQ.md)
* [Command Reference](docs/CommandReference.md)
* [Common Use-Cases and Examples](docs/Examples.md)
* [Programmatic Usage](docs/ProgrammaticUsage.md)
* [Behind The Scene](docs/BehindTheScene.md)
* [Fixing Reset-on-Connect Issue](docs/Reset_on_Connect.md)
* [File Transfer Encoding](docs/TransferEncoding.md)
* [Webstorm Integration](docs/WebstormIntegration.md)
* [Contribution Guidelines](CONTRIBUTE.md)
* [NodeMCU DEVKIT Schematics](https://github.com/nodemcu/nodemcu-devkit-v1.0/blob/master/NODEMCU_DEVKIT_V1.0.PDF)
* [Changelog](CHANGES.md)
* [License](LICENSE.md)Terminology
-----------
* **NodeMCU** Original [NodeMCU](http://nodemcu.com/index_en.html) Module **OR** any [ESP8266](http://espressif.com/en/products/esp8266/) platform with [NodeMCU Firmware](https://github.com/nodemcu/nodemcu-firmware)
* **Upload** Transfer files from your PC to NodeMCU/ESP8266 module
* **Download** Transfer files/obtaining information from the module---------------------------------------
Requirements
------------To use/install the NodeMCU-Tool, you have to prepare your system to match the following requirements. Especially as beginner, you should read this part **carefully**
### NodeMCU Serial Driver ###
Depending on your Module-Type you have to install the platform-specific driver for the usb-serial-interface.
The original NodeMCU v0.9 comes with a CH341 chip with may requires manual driver installation. Modern versions like 1.0 use a CP210x chip with work out of the box on most common systems.
Other ESP8266 platforms may user other interfaces - please refer to their user manuals!### Node.js ###
The NodeMCU-Tool is written in javascript and requires [Node.js >= 7.6](https://nodejs.org) as runtime environment. And please don't worry about the wording - NodeMCU and Node.js are two **complete different** things!
**!! There is currently an issue with Node.js 11 on Windows 10 platforms. Please use Node.js 10 LTS !!**
In case you're not familiar with [Node.js](https://nodejs.org) and [NPM](https://www.npmjs.com) it's recommended to read some [basic introductions](https://docs.npmjs.com/getting-started/what-is-npm) first!
Please [download the Node.js installer](https://nodejs.org/en/download/) and install on your system in case it's not already there.---------------------------------------
Installation
------------Thanks to Node.js, the NodeMCU-Tool is platform independent and will run on Windows, Linux und OSX. There are different installation variants available (system wide or project based).
### via NPM (Node.js Package Manager) ###
It's recommended to install nodemcu-tool as [global package](https://docs.npmjs.com/getting-started/installing-npm-packages-globally).
NPM will register the binary automatically in your path - it will be directly available on the command line.#### Global Installation as root (Linux/Mac OS Platforms) ####
The global installation may require administrator(root) privileges because the package is added to the systems library path. If you get any permission errors on Linux/Mac OS run the command as root or via `sudo`.
> **Note:** In some special cases the installation may fail with some errors related to `node-serialport` or `node-gyp`. This errors are caused by missing pre-build binaries (native code/drivers for your platform matching your OS/nodejs version) - therefore they have to compiled on your machine!
> To resolve such issues, add the `--unsafe-perm` flag to the following command - it allows the build scripts to be executed as root.```shell
$ sudo npm install nodemcu-tool -g
```#### Global Installation (Windows Platforms) ####
```shell
$ npm install nodemcu-tool -g
```#### Local/Project related Installation ####
You can also install it in your local project directory. When using this method, the `nodemcu-tool` command is **not registered** within your path!
```shell
$ npm install nodemcu-tool
```In this case, a link to the binary file is located in `node_modules/.bin/nodemcu-tool`
### As Archive from GitHub ###
You can also download the [latest release](https://github.com/AndiDittrich/NodeMCU-Tool/releases/latest) directly from [GitHub](https://github.com/AndiDittrich/NodeMCU-Tool/releases) and extract the sources to your project directory.
After downloading you have to **install the dependencies** by running `npm install` in the nodemcu-tool directory.When using this method, the `nodemcu-tool` command is **not registered** within your path. You have to register it manually using a symlink - or the recommended way: call the binary file `./bin/nodemcu-tool.js` directly.
---------------------------------------
First Steps
-----------### 1. The Location of the binary file ###
After installing **NodeMCU-Tool** you should open a **new** terminal window and check if the tool is working by obtaining the current version. It should output the current semantic-version tag.
Depending on your installation type (global ==> file is registered into your path) you can use the tool directly or you have to go into the module directory:#### For Global Installations (Win/Linux/OSX) ####
The binary file is registered within your path. This tutorial assumes that you have installed the tool globally. Otherwise you have to modify the program-call as described below.
```bash
$ nodemcu-tool --version
1.5.0
```#### For Local Installations ####
This means you have installed nodemcu-tool via NPM **without** the `-g` (global) flag or via the `.zip` / `.tar` package.
There will be **no** global shortcut to the nodemcu-tool binary! The binary is located in `node_modules/nodemcu-tool/bin/nodemcu-tool.js`##### Linux, OSX #####
```bash
$ cd node_modules/nodemcu-tool/bin
$ ./nodemcu-tool.js --version
1.5.0
```##### Windows #####
You have to call the node.exe runtime in your command!
```bash
$ cd node_modules/nodemcu-tool/bin
$ node nodemcu-tool.js --version
1.5.0
```### 2. Identify Your NodeMCU Device ###
Now you can connect the NodeMCU Module to your computer. The module will be accessible via a virtual serial port. You can identify the port by using the `devices` command.
In this example, it is connected via `/dev/ttyUSB0`. Keep in mind that you have to provide the device-name to NodeMCU-Tool on each command!```shell
./nodemcu-tool devices
[NodeMCU] Connected Devices | Total: 1
|- /dev/ttyUSB0 (Silicon_Labs, usb-Silicon_Labs_CP2102_USB_to_UART_Bridge_Controller_0001-if00-port0)
```### 3. Create the initial File System ###
This will remove all existing files on the module but is required when running the module **for the first time**. You can skip this step in case you've already done that manually!```shell
$ nodemcu-tool mkfs --port=/dev/ttyUSB0
[NodeMCU-Tool] Do you really want to format the filesystem and delete all file ? (no) yes
[NodeMCU-Tool] Connected
[NodeMCU] Version: 0.9.5 | ChipID: 0xd1aa | FlashID: 0x1640e0
[NodeMCU] Formatting the file system...this will take around ~30s
[NodeMCU] File System created | format done.
```### 4. Upload a new File ###
**Hint** include the native [encoder Module](https://nodemcu.readthedocs.io/en/release/modules/encoder/) into your firmware to speed-up the uploading by factor 4..10!
```shell
$ nodemcu-tool upload --port=/dev/ttyUSB0 helloworld.lua
[NodeMCU-Tool] Connected
[NodeMCU] Version: 0.9.5 | ChipID: 0xd1aa | FlashID: 0x1640e0
[NodeMCU-Tool] Uploading "main.lua" ...
[NodeMCU-Tool] Data Transfer complete!
```### 5. Run It directly and view the output ###
```shell
$ nodemcu-tool run helloworld.lua
[NodeMCU-Tool] Connected
[NodeMCU] Version: 0.9.5 | ChipID: 0xd1aa | FlashID: 0x1640e0
[NodeMCU] Running "helloworld.lua"
>----------------------------->
Hello World!
YEAH!!! HELLO WORLD!!!
String: Lorem ipsum dolor sit amet, consetetur sadipscing elitr
>----------------------------->
```### Available Commands ###
All commands a well documented within the [Command Reference](docs/CommandReference.md)
Project based configuration
---------------------------In case you're using different serial port or the baudrate-settings, it's possible to create a configuration file with specific settings for your project.
To initially create the configuration file, use the `init` command:```shell
$ nodemcu-tool init
[NodeMCU-Tool] Creating project based configuration file..
[NodeMCU-Tool] Baudrate in Bit per Seconds, e.g. 9600 (default) (9600) 9600
[NodeMCU-Tool] Serial connection to use, e.g. COM1 or /dev/ttyUSB2 (/dev/ttyUSB0) COM3
```This will create a JSON based configuration file named `.nodemcutool` in your **current directory** - you can edit this file manually
### Example Configuration ###
In this Example, the baudrate is changed to 19.2k and COM3 is selected as default port. Additionally the `--minify` and `--compile` flags are set permanently.
```json
{
"baudrate": "19200",
"port": "COM3",
"connectionDelay": 100,
"compile": true,
"minify": true,
"keeppath": true
}
```
### Configuration Keys ###All configuration options are **optional**
* **baudrate** (int) - the default baudrate in bits per second
* **port** (string) - the comport to use
* **connectionDelay** (int) - connection-delay in ms
* **compile** (boolean) - compile lua files after upload
* **minify** (boolean) - minifies files before uploading
* **keeppath** (boolean) - keep the relative file path in the destination filename (i.e: static/test.html will be named static/test.html)
### Notes ###
* NodeMCU-Tool will only search in the **current directory** for the `.nodemcutool` file!
* All default options can be overwritten by using the command line options
* The `.nodemcutool` file is only recognized in `CLI Mode` **NOT** in `API Mode`Programmatic Usage and Low Level API
------------------------------------
It's possible to use the underlying "NodeMcuConnector" in your own projects to communicate with a NodeMCU based device.
Or you can call the `bin` file with an external tool. For more details, take a look into the [Programmatic Usage Guide](docs/ProgrammaticUsage.md)Any Questions ? Report a Bug ? Enhancements ?
---------------------------------------------
Please open a new issue on [GitHub](https://github.com/AndiDittrich/NodeMCU-Tool/issues)Contributing
------------Contributors are welcome! Even if you are not familiar with javascript you can help to improve the documentation!
License
-------
NodeMCU-Tool is OpenSource and licensed under the Terms of [The MIT License (X11)](http://opensource.org/licenses/MIT). You're welcome to [contribute](https://github.com/AndiDittrich/NodeMCU-Tool/blob/master/CONTRIBUTE.md)!