Over the holidays I finally caved and bought myself a cheap 3D printer, a Monoprice MP Select Mini v2.
It’s obviously a lot smaller than some of its competitors for the same price like the Ender 3, but I needed it to fit in a small space and it packs surprisingly high performance software/hardware in it.
This little thing works great! The UI on the physical device looks fine and works well. It even has Wifi! However, I was disappointed to discover how primitive the native web UI was, and it failed to show some basic things like the target temperatures the extruder and bed were set to.
So after using the web UI for a few weeks I decided I needed to make something better looking (more like the local controller) and easier to use. I took a weekend to write up a simple Android app to accomplish this and add a few extra features that are supported by the device’s native web server but not available in that web UI.
- UI theming similar to the local UI on the physical device
- View print status, including loading bar and percentage complete
- View current extruder/bed temperatures
- View and set extruder/bed target temperatures
- Cancel print button
- Automatic querying on app open to allow quickly checking on the status
- Automatic retrying connection a few times to account for occasional phone connectivity issues or printer server issues
Unfortunately I’ve had a limited time to continue development, but I hope to continue adding features:
- Uploading a file to print (as on web UI)
- Start/Pause print button (as on web UI)
- Allow selecting from and starting a print from files already on inserted SD card
- Adding guidance and tutorials to assist in troubleshooting or initially setting up printer’s Wifi connection
- Notifications on print completion
Notifications would be by far the most useful feature that isn’t natively available, but this adds an unfortunate amount of complexity to the app. This would involve either repetitively querying the print server when the app is in the background or keeping a web socket connection open in the background, both of which would result in higher battery consumption which is obviously not ideal. This also means being very careful about ensuring the user is aware of this high power usage and making sure the background querying starts and stops when requested and only when requested.
So that’s the goal! In the meantime, I hope this is useful to others in its current state.