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.
As someone who has been planning their own cloud dashboard, I've done some research and planning into how to manage the SD cards and the best (untested) solution that I have come up with is to edit the YAML config file and change the document root for the Virtual SD folder. Theoretically I believe you should be able to mount a folder from a computer as a network drive (you'll need a computer running some form of a Linux-OS I believe), then you should be able to access that network drive from your Octoprint devices. Modify the YAML config for the Virtual SD card to point to the location of the network drive and you should be good to go.
Again I have not tested this, purely a theory dreamt up by my imagination.