maroonOS is a custom-built dashboard for Prusa machines using Prusa Link/Prusa Connect. It was developed as a replacement for OctoDash after moving from OctoPrint to Prusa Connect. To pull data from the printer(s), the Prusa Link API is used. This project is still in development with new features in the works (a timeline for expected features will be added soon). To get this running on your own Raspberry Pi, you can just follow the raspiConfigInstructions.txt file.
NOTE: This project was developed to run on a 1440 x 2560 portrait monitor. Your mileage may vary if running at a different resolution/size.
maroonOS is comprised of two main parts; the server backend and the GUI frontends. Both are required to be running for the dashboard to function correctly.
Two servers are running behind the scenes to orchestrate communication with the printer and manage a separate settings page. Both servers are built in Python with Flask as the server framework and Waitress as the WSGI (Web Server Gateway Interface). Both servers are started when the Raspberry Pi boots up and then they wait for a request.
The main server is contained in the server.py file. It waits for a fetch request from JavaScript that is sent through an internal IP address. When receiving a request, it matches it with the correct route and then follows the associated function to get information from the printer. The call to the printer is authenticated by attaching the X-Api-Key header to the request. This value is the API key from Prusa Link.
A settings server is currently in development. Its goal is to allow for an easier way to customize parts of the dashboard (the sleep screen image or video (planned feature) for example). It will be served up by the second Python server in the settingsServer.py file. More information to come.
The frontends are built in HTML, CSS, and JavaScript which is running on Chromium in kiosk mode. The dashboard.html file is the main view that is displayed when the printer is running. Its supporting files are dashboardLoop.js and dashboardStyles.css. The sleep.html file is the sleep screen that is displayed when the printer is idle or disconnected. Its supporting files are sleepLoop.js and sleepStyles.css. There are some additional frontends files that aid in the operation of the frontends across the board to create a unified color scheme, font family, interface startup, and asset library.
Developed for FRC Team 1701 - Robocubs