OctoPrint control panel in Python curses

I recently got an old computer screen out of my garage. It is now just perfect to monitor the extruder temperature and print progress from OctoPrint.

The screen is linked to the Raspberry Pi using an HDMI to DVI cable. To save some resources on this small board, I decided to use ncurses, which avoids the use of an X server. Communication with OctoPrint is done through the REST API. It allowed me to retrieve both temperature and print progress which are the most important values to me while printing.

The code is written in Python which includes native bindings to ncurses. To make extruder temperature visible from far distance, I decided to use some ASCII art to draw the numbers over several terminal lines. A progress bar is also present at the bottom of the screen.

Coding this took very few time, but the result is yet pretty convincing. However, I noticed that while the big numbers were very useful for far sight, numerical displays should be duplicated in normal letters for close sight, when I’m just right in front of the screen, manipulating the printer.

I provide my code here: octomonitor_mk1.py. To use it, replace BASE_URL and fill API_KEY. It does not require any dependency except python itself.

Leave a Reply

Your email address will not be published. Required fields are marked *