Framework for cloud enabled printers

I recently purchased BCN3D Epsilon printer. With current firmware, connecting to the printer is not possible via serial interface. Instead the printer is remotely controlled via BCN3D cloud using http api calls.
I investigated would it be possible to create Octoprint plugin to control the printer, but as far as I can see, the current plugin api does not quite lend itself to this. I think that several manufacturers are going to this could direction, so should we think some kind of plugin or core changes to Octoprint to support this in generic way?
The Octoprint UI would lend itself without too much modifications. In addition to local and SD-card file lists new type of cloud file list should be added. Manual controls and terminal tab should be possible to disable because at least BCN3D does not support these. The major change is that instead parsing status and sending commands via serial port, the communication would be by polling HTTP api.

I have done very little development for Octoprint so I'd like to hear community input on would there be interest for these kind of changes and how would you design it?

For OctoPrint 2.0.0, the whole serial communication layer has been reworked to better support things like this. The latest OctoPrint on Air gives a great demonstration of how everything is split into transports and protocols and how you can mix and match. I don't know the exact details of how it is implemented, but I do know it has been designed to be easily extendable.

In the meantime, the bundled Virtual Printer plugin may be good inspiration of how to replace the serial comm.

If the mentioned printer doesn't have a serial interface, then things may be a lot more difficult. You may have to go down the route of implementing a lot of it yourself, for example a new tab in the UI and the plugin handles everything, rather than trying to squeeze modifications in to the existing system.

1 Like