OctoWatch is a lightweight, Bash-based dashboard for monitoring multiple 3D printers via OctoPrint’s API. Think of it as a stripped-down, resource-friendly alternative to projects like OctoFarm — designed for quick, real-time insights on low-end systems.
It displays real-time information—such as print progress, elapsed/remaining time, file name, and temperature data—in a clean, color-coded terminal interface.
Screencast.from.2025-03-26.21-54-32.webm
If you like OctoWatch, find it useful, and want to donate— Kindly, support the main project, OctoPrint, which makes all of this possible! Your contributions help keep it growing and improving for everyone.
Support OctoPrint here!
Big thanks to Gina Häußge for creating OctoPrint and making life easier for 3D printing enthusiasts worldwide!
Now, let's explore more about octowatch ...
-
Multi-Printer Monitoring:
-
Real-Time Monitoring:
- Displays printer status, print progress (with an integrated progress bar)
- Elapsed and remaining hours, and estimated finish time. (The more you print, the better it predicts Finishing time)
-
Temperature Feedback:
Shows bed and nozzle temperatures, color-coded based on a ±3°C tolerance compared to target values. -
Resource-Friendly: Loads quickly in the terminal, avoiding the sluggishness of browser-based interfaces. Ideal for Raspberry Pi and other low-end systems.
-
Easy Configuration: Printer settings are stored in an INI file, making setup and adjustments straightforward. There is
printers-default.iniis bundled with the repository, you can rename it and start editing it with settings of your networks. Some examples are already in theinifile for you to quick start. -
Error Handling & Logging: Logs events and errors to octowatch.log, ensuring you’re always informed of any issues. Logs errors to
octowatch.logfile in the same folder as the script. -
ANSI & VT100 Formatting:
Uses ANSI color codes and VT100 cursor control for a dynamic, refreshed and smooth terminal display. -
Configurable Settings:
Hack refresh intervals and customize display parameters directly in the script, by changing few variable values at the top of script. -
Dependency Check:
Automatically verifies required dependencies, installs them, if needed.
- Bash (v4+ recommended)
- Dependencies:
curl,jq,git,bc,awk
(The script checks for and installs missing dependencies on Debian/Ubuntu systems.)
-
Clone the Repository:
git clone https://github.com/TheKvc/octowatch.git cd octowatch -
Configure Your Printers:
Create or update the
printers.inifile in the repository root.
Example format:[Printer1] api_key = YOUR_API_KEY_1 base_url = http://printer1.local [Printer2] api_key = YOUR_API_KEY_2 base_url = http://192.168.0.555
Note: There is a Sample File provided in the repo, you can simply rename it to 'printers.ini' and change the internal template values as per your need.
mv "printers-default.ini" "printers.ini"
nano "printers.ini"
chmod +x "octowatch.sh"Run the dashboard script:
./octowatch.shThe script refreshes every few seconds (default interval is set in the script) and displays:
- Printer: The printer’s name as specified in the INI file.
- Status: Current state (e.g., Printing, Operational) with bed and nozzle temperatures.
- File: The currently printing file (trimmed if too long).
- Progress: A progress bar that shows the percentage (centered) and updates dynamically.
- Elapsed Time / Remaining Time: Timings in
hh:mm:ssformat, with an estimated finish time based on the current rate.
-
Refresh Intervals:
ModifyDEFAULT_INTERVALandDEFAULT_SCREEN_REFRESHin the script to change API fetch and screen refresh timings.If you reduce the interval to improve smoothness of screen refresh, it directly affects the performance of your octoprint server. While printing, I don't want to overload my octoprint server with unnecessary API calls, so I do it every 5 Seconds as i am using two Raspberry pi zero 2W as main controller for both of my Ender 3 Max and Ender 3 v2 3D printers.
-
Display Parameters:
AdjustFILE_NAME_MAXand the progress bar length or characters in theprogress_barfunction. -
Colors:
ANSI color variables are defined at the top for easy customization.
Notice: Experimental Progress bar...
All error messages and significant events are logged in octowatch.log located in the repository folder.
Contributions and feedback are welcome! Please open an issue or submit a pull request if you have improvements or bug fixes.
This project is licensed under the MIT License.
If this project helps you keep an eye on your 3D printers efficiently, please consider giving it a star on GitHub. Your support helps improve the project and motivates further development!