WASH-PRO-CORE is an embedded system based on ESP32 with a multifunctional web interface for managing tasks, files, and system settings. The project is designed with a focus on flexibility, ease of use, and extensibility.
Important
This project is under active development. It is being created as an open-source alternative firmware for WASH-PRO controllers and is provided "as-is" without any guarantees. We encourage community participation and welcome developers to use this project as a foundation for their own custom firmware.
- Default Access Point: The device starts in Access Point (AP) mode with the SSID
WASH-PRO-CORE-xxxxfor initial setup.
A modern, responsive UI with a sidebar menu that displays correctly on both desktop and mobile devices.
-
Menu Sections:
- Home: Displays main system information.
- Tasks: Manage tasks and their scripts.
- System: Settings for language, theme, and license key.
- Network: Wi-Fi connection setup.
- Files: Built-in file manager.
- Update: Firmware and filesystem updates.
- Reboot: Device reboot management.
-
Multilingual Support: The interface is translated into 16 languages, including Russian, English, German, and others, with on-the-fly switching.
-
Themes: Support for 7 different color themes to personalize the look and feel.
-
Task Management: Create, rename, and delete tasks. For each task, you can write and save a Lua script using the built-in editor, which highlights available functions.
-
File Manager: A full-featured manager for working with the LittleFS filesystem. It allows you to browse the folder structure, rename, delete, and edit text files directly in the browser.
-
System Settings:
- License Key: A field is provided for entering and saving a license key. The system also displays the current license activity status.
- Update: A page for secure OTA (Over-the-Air) firmware updates and uploading files to the filesystem. An option for enabling automatic updates is available.
- Reboot: The ability to perform a "soft" (software) or "hard" (hardware) reboot with a configurable delay.
GET /api/info— Controller information (serial number, memory, license).GET /api/system— System settings (software version, language, theme).POST /api/setlanguage— Set language (parameter:lang).POST /api/settheme— Set theme (parameter:theme).POST /api/setlicense— Set license key (parameter:key).POST /api/autoupdate— Enable/disable auto-update (parameter:enabled).POST /api/reboot— Reboot the device (parameters:type={soft,hard},delay=sec).
GET /api/tasks— Get a list of all tasks.POST /api/tasks— Create, rename a task, or save a script for it (parameters:id,name,script).GET /api/tasks/{id}— Get a single task with its script.POST /api/tasks/run— Run a task (parameter:id).DELETE /api/tasks/{id}— Delete a task.GET /api/builtins— Get a list of built-in functions for the editor.
GET /api/files— Get a list of files and folders by path (parameter:path).POST /api/files/delete— Delete a file or folder (parameter:path).POST /api/files/rename— Rename a file (parameters:path,newName).POST /api/files/save— Save content to a file (parameters:path,content).
POST /api/wifi— Save Wi-Fi credentials and connect (parameters:ssid,pass).POST /api/upload/firmware— Upload firmware (OTA).POST /api/upload/fs— Upload a file to the filesystem.
- Build the project:
pio run
- Upload web resources (the
datafolder):pio run --target uploadfs
The project includes a suite of integration tests to verify the web server's API. These tests are written in Python and are run from a computer connected to the device's Wi-Fi access point.
- Python: Version 3.8 or higher is recommended.
requestslibrary: Required for sending HTTP requests.
- If you don't have Python installed, download it from python.org.
- Install the
requestslibrary via the terminal:pip install requests
- Connect to the device: Power on the ESP32 and connect your computer to its Wi-Fi network (e.g.,
WASH-PRO-CORE-xxxx). The default IP address is192.168.4.1. - Execute the command in the terminal from the project's root folder:
python test/run_tests.py
The script will execute all tests and print a summary of the results.
