Prusa3D is moving to the new larger offices, so I unfortunately didn’t have much time for PrusaPrinters last few days. But we are expanding and upgrading our printfarm to 16 printers and it brings some interesting challenges we are trying to solve. We have the printers separated from the main assembly room so they don’t disturb us. But you need to check the print status pretty often to reduce donwtime and going to a different room is really ineffective. We run the printers with awesome OctoPrint which has an API! Check out the video 😉
Coding
I used to code a lot so I am no stranger to JavaScript and so I thought it should be pretty easy to make a nice dashboard. And it indeed was 🙂 In two afternoons I coded a little page capable of monitoring the status of all the printers.
It is pretty easy, you just need to setup the HAProxy on the Linux for CORS as there are some rules for cross browser calling.
After that it is as easy as calling
$.getJSON("http://printerIP/api/job", function(json) { $("#printerStatus").html(json.state); }
Hardware
Also at 16 printers the RaspberryPis would get quite expensive so we decided to run multiple printers from one one computer. We ended up using MarsBoard. We pretty much fell in love with this thing but more about that later.
I also use this farm to do the final check on Prusa i3 printers I sell, I want to have them running at least 10 hours before shipping.
I think it is perfect board for running 3D printers.
Video
Plans
- Simple preheating interface
- Simple choose G-code and run a print capability
- Refactor the code and share it 😉
More in part 2 coming soon!
I have been working on an OctoPrint interface for iOS. I’ve been hosting my work here.
How did you setup haproxy and CORS to just use $.getJSON without the API key? Thanks
I will write more about it in part 2. Hopefully on weekend 😉
Maybe this can help you https://bitbucket.org/tockainfo/octoprint-wwwdashboard