|
|
@ -1,30 +1,30 @@ |
|
|
|
# esp-vt100-firmware |
|
|
|
# ESPTerm |
|
|
|
|
|
|
|
|
|
|
|
ESP8266 Remote Terminal project |
|
|
|
ESP8266 Wireless Terminal Emulator project |
|
|
|
|
|
|
|
|
|
|
|
This project is based on SpriteTM's esphttpd and libesphttpd, forked by MightyPork to |
|
|
|
This project is based on SpriteTM's esphttpd and libesphttpd, forked by MightyPork to |
|
|
|
[MightyPork/esphttpd](https://github.com/MightyPork/esphttpd) and |
|
|
|
[MightyPork/esphttpd](https://github.com/MightyPork/esphttpd) and |
|
|
|
[MightyPork/libesphttpd](https://github.com/MightyPork/libesphttpd) respectively. |
|
|
|
[MightyPork/libesphttpd](https://github.com/MightyPork/libesphttpd) respectively. |
|
|
|
|
|
|
|
|
|
|
|
Those forks include improvements not yet available upstream. |
|
|
|
Those forks include improvements not available upstream. |
|
|
|
|
|
|
|
|
|
|
|
## Goals |
|
|
|
## Goals |
|
|
|
|
|
|
|
|
|
|
|
This project aims to be a wireless terminal emulator that'll work with the likes of |
|
|
|
The project aims to be a wireless terminal emulator that'll work with the likes of |
|
|
|
Arduino, AVR, PIC, STM8, STM32, mbed etc, anything with UART, even your USB-serial dongle will work. |
|
|
|
Arduino, AVR, PIC, STM8, STM32, mbed etc, anything with UART, even your USB-serial dongle will work. |
|
|
|
|
|
|
|
|
|
|
|
Connect it to the master device via UART and use the terminal on the built-in web page for debug logging, |
|
|
|
Connect it to the master device via UART and use the terminal on the built-in web page for debug logging, |
|
|
|
remote control etc. It works like a simple LCD screen, in a way. |
|
|
|
remote control etc. It works like a simple LCD screen, in a way. |
|
|
|
|
|
|
|
|
|
|
|
It lets you make simple UI (manipulating the screen with ANSI sequences) and receive input from buttons on |
|
|
|
It lets you make simple UI (manipulating the screen with ANSI sequences) and receive input from buttons on |
|
|
|
the webpage (and keyboard on PC). Touch input is planned as well. |
|
|
|
the webpage (and keyboard on PC). There is some rudimentary touch input as well. |
|
|
|
|
|
|
|
|
|
|
|
The screen size is adjustable up to 25x80 (via a special control sequence) and uses 16 standard colors |
|
|
|
The screen size is adjustable up to 25x80 (via a special control sequence) and uses 16 standard colors |
|
|
|
(8 dark and 8 bright). |
|
|
|
(8 dark and 8 bright). Both default size and colors can be configured in the settings. |
|
|
|
|
|
|
|
|
|
|
|
## Project status |
|
|
|
## Project status |
|
|
|
|
|
|
|
|
|
|
|
*Almost finished, still possibly buggy, but it looks promising. Most of the features are there now.* |
|
|
|
*A little buggy, but mostly okay! There are many features and fixes planned, but it should be fairly usable already.* |
|
|
|
|
|
|
|
|
|
|
|
- We have a working **2-way terminal** (UART->ESP->Browser and vice versa) with real-time update via websocket. |
|
|
|
- We have a working **2-way terminal** (UART->ESP->Browser and vice versa) with real-time update via websocket. |
|
|
|
|
|
|
|
|
|
|
@ -42,11 +42,9 @@ The screen size is adjustable up to 25x80 (via a special control sequence) and u |
|
|
|
Arrow keys generate ANSI sequences, ESC sends literal ASCII code 27 etc. Almost everything can be input |
|
|
|
Arrow keys generate ANSI sequences, ESC sends literal ASCII code 27 etc. Almost everything can be input |
|
|
|
straight from the browser. |
|
|
|
straight from the browser. |
|
|
|
|
|
|
|
|
|
|
|
- To resize the screen, send `\e]W<rows>;<cols>\a` (it's an OSC code, terminated by ST). |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
- Buttons pressed in the browser UI send ASCII codes 1..5. Mouse clicks are sent as `\e[<row>;<col>M`. |
|
|
|
- Buttons pressed in the browser UI send ASCII codes 1..5. Mouse clicks are sent as `\e[<row>;<col>M`. |
|
|
|
|
|
|
|
|
|
|
|
- There's a built-in WiFi config page and a Help page with a list of all supported ANSI sequences etc. |
|
|
|
- There's a built-in WiFi config page and a Help page with a list of all supported ANSI sequences and other details. |
|
|
|
|
|
|
|
|
|
|
|
## Development |
|
|
|
## Development |
|
|
|
|
|
|
|
|
|
|
@ -67,33 +65,18 @@ The screen size is adjustable up to 25x80 (via a special control sequence) and u |
|
|
|
KERNEL=="tty[A-Z]*[0-9]*", GROUP="uucp", MODE="0666" |
|
|
|
KERNEL=="tty[A-Z]*[0-9]*", GROUP="uucp", MODE="0666" |
|
|
|
``` |
|
|
|
``` |
|
|
|
|
|
|
|
|
|
|
|
- Install Ragel if you wish to make modifications to the parser. |
|
|
|
- Install Ragel if you wish to make modifications to the ANSI sequence parser. |
|
|
|
If not, comment out it's call in `build_parser.sh`. The `.rl` file is the actual source, the `.c` is generated. |
|
|
|
If not, comment out its call in `build_parser.sh`. The `.rl` file is the actual source, the `.c` is generated. |
|
|
|
|
|
|
|
|
|
|
|
- Install Ruby and then the `sass` package with `gem install sass` (or try some other implementation, such as |
|
|
|
- Install Ruby and then the `sass` package with `gem install sass` (or try some other implementation, such as |
|
|
|
`sassc`) |
|
|
|
`sassc`) |
|
|
|
|
|
|
|
|
|
|
|
- Get the IoT SDK from one of: |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
``` |
|
|
|
|
|
|
|
ESP8266_NONOS_SDK_V2.0.0_16_08_10.zip: |
|
|
|
|
|
|
|
wget --content-disposition "http://bbs.espressif.com/download/file.php?id=1690" |
|
|
|
|
|
|
|
ESP8266_NONOS_SDK_V2.0.0_16_07_19.zip: |
|
|
|
|
|
|
|
wget --content-disposition "http://bbs.espressif.com/download/file.php?id=1613" |
|
|
|
|
|
|
|
ESP8266_NONOS_SDK_V1.5.4_16_05_20.zip: |
|
|
|
|
|
|
|
wget --content-disposition "http://bbs.espressif.com/download/file.php?id=1469" |
|
|
|
|
|
|
|
ESP8266_NONOS_SDK_V1.5.3_16_04_18.zip: |
|
|
|
|
|
|
|
wget --content-disposition "http://bbs.espressif.com/download/file.php?id=1361" |
|
|
|
|
|
|
|
ESP8266_NONOS_SDK_V1.5.2_16_01_29.zip: |
|
|
|
|
|
|
|
wget --content-disposition "http://bbs.espressif.com/download/file.php?id=1079" |
|
|
|
|
|
|
|
``` |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
It's tested with 1.5.2, 2.0.0 won't work without adjusting the build scripts. Any 1.5.x could be fine. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
The `esp-open-sdk` Makefile could also download this for you with the right flags. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
- Make sure your `esphttpdconfig.mk` is set up properly - link to the SDK etc. |
|
|
|
- Make sure your `esphttpdconfig.mk` is set up properly - link to the SDK etc. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
The IoT SDK is now included in the project due to problems with obtaining the correct version and patching it. |
|
|
|
|
|
|
|
It works with version 1.5.2, any newer seems to be incompatible. If you get it working with a newer SDK, a PR is more |
|
|
|
|
|
|
|
than welcome! |
|
|
|
|
|
|
|
|
|
|
|
### Web resources |
|
|
|
### Web resources |
|
|
|
|
|
|
|
|
|
|
|
The web resources are in `html_orig`. To prepare for a build, run `build_web.sh`, which packs them and |
|
|
|
The web resources are in `html_orig`. To prepare for a build, run `build_web.sh`, which packs them and |
|
|
@ -104,6 +87,9 @@ then embedded in the firmware image. |
|
|
|
It's kind of tricky to develop the web resources locally; you might want to try the "split image" |
|
|
|
It's kind of tricky to develop the web resources locally; you might want to try the "split image" |
|
|
|
Makefile option, then you can flash just the html portion with `make htmlflash`. I haven't tried this. |
|
|
|
Makefile option, then you can flash just the html portion with `make htmlflash`. I haven't tried this. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
For local development, use the `server.sh` script in `html_orig`. It's possible to talk to API of a running |
|
|
|
|
|
|
|
ESP8266 from here, if you configure `_env.php` with its IP. |
|
|
|
|
|
|
|
|
|
|
|
### Flashing |
|
|
|
### Flashing |
|
|
|
|
|
|
|
|
|
|
|
The Makefile should automatically build the parser and web resources for you when you run `make`. |
|
|
|
The Makefile should automatically build the parser and web resources for you when you run `make`. |
|
|
|