FabLab Automation

FabApp, OctoPuppet and JuiceBox are a suite of robust management tools designed to streamline, organize, and add accountability and granular control to any makerspace or FabLab. These tools were developed by UTA FabLab staff and are available for any makerspace to adopt and adapt for their own customized use, with attribution, through GitHub. Additional support for this project has been provided through UTA’s Object-Oriented Software Engineering course, which has partnered with our Maker Literacies program. New modules and updates to FabApp, OctoPuppet and JuiceBox are added regularly.

FabApp Ticketing System

FabApp is the heart of this system – it provides the backbone ticketing system used to manage and track anything from 3D printing to plasma cutting through an easily-navigated web interface. All measurable interactions are recorded through a ticket-based system – each usage session’s beginning time, end time, user ID, completion status, cost, payment status, and physical location (post-completion and machine group-dependent) are tracked and stored, along with the ID of the employee who assisted them with beginning their usage ticket and the purpose of the usage session. User’s personal information collected is kept to a minimum (for example, we do not save user’s names, only their user ID numbers), and all usage date is de-identified prior to any data analysis.   

FabApp has the capability to track device usage permissions for JuiceBox, assign training certificates to any machine desired, create training prerequisite chains, and assign independent unique identifiers to its users; it also contains a module to create wait ticket lists for both individual devices and device groups as a whole (complete with automated SMS and email status updates) and a trouble-ticket system for reporting and recording equipment trouble and maintenance.  

OctoPuppet for Managing 3D Printing

Octopuppet logoOctoPuppet is the Raspberry Pi-based endpoint system for managing 3D prints. It is a modified version of the OctoPrint system created by Gina Häußge

To initiate a print, a user must upload their gcode through its web interface, and after hitting print provide their ID number, the color of filament, and the general purpose of the print from a drop-down list. OctoPuppet then analyzes the gcode to be printed and gathers the amount of filament projected to be used and the anticipated length of time to complete the print. It then relays back the ID number, beginning time, and the other collected information to FabApp securely. FabApp then examines its database to see if the ID number in question has any prior prints they must still pick up/pay for, or any other reason why the user would be disallowed from starting the print job (an uncompleted trouble ticket on the device with a “nonoperational” status attached, for example), then relays back a message to initiate printing or deny it (with accompanying feedback for the user to state the reason it was denied).

No user information is stored on the Raspberry Pi; it only intakes and transmits the user ID back to FabApp.

JuiceBox for Authorized Access

JuiceBox is the Raspberry Pi-based endpoint system utilized for managing access to any device that requires training, or at least requires mediated usage by a second person authorized to work with the device. 

In the current setup, users have an RFID key fob issued to them after completing basic shop training (although the unique identifier and input method for it are arbitrary and could be changed to anything desired) which is linked to their student ID. As trainings are completed, training certificates are awarded to the end user and tied to their student ID number. 

To activate a piece of equipment managed by a JuiceBox unit, the end user places their RFID against the JuiceBox unit and presses its button to initiate primary authorization. The secondary authorization happens once the second person (currently, this must be a FabLab employee) places their RFID against the box to be read. JuiceBox reads the RFID serials from both key fobs and relays them, along with the ID for the device it is managing, back to FabApp. 

FabApp then examines the training certificates that have been awarded to both parties – if they are both authorized to operate the device, FabApp sends a confirmation message back to the JuiceBox, which then activates the microprocessor-controlled relay (PowerTail) it is paired up with in order to provide electricity to the device. Just like the non-mediated device’s tickets, the start time, device ID, and operator’s ID are recorded when the usage ticket is initiated, and the end user presses the same button on the JuiceBox once they are finished using it in order to record the pertinent information for ending the ticket and disable the power to the device. 

Just like with OctoPuppet, no user information is retained on the Raspberry Pi – it only intakes and relays information to and from FabApp and enables the power based on the feedback it receives.