Duet muti printer server anyone?
-
David, for printfarms, that sounds like a great idea. Any more details on how this would be accomplished? where would that overview website run? on one of the duets and fetch the key data from other duets?
thanks
-
The website would mostly run in the browser (as DWC does). The web files could be fetched from the local disc on the PC, or the internet, or one of the Duets.
-
well i have 6 printers and it would be nice to see everything controlled from one web page
-
I cant think of any software that does this for 3d printers by default; but I very much understand what you are getting at. Your question is fortuitous, since i am working towards something similar.
At work I actually implement/configure/maintain a continuous integration system. It builds software, not parts, but the similarities are striking:
- Long running jobs (we are building linux kernels, for instance) that you want to see progress and status for.
- Nodes (build engines) that process jobs. They have a status (on/offline, ready etc), central controller monitors filesystems and other code repositories for triggers/inputs, and then select a suitable builder based on customizable rules.
- Ability to view and control those jobs in progress (start/stop/retry) via a single web interface/page.
- History, tied to jobs and browsable.
- Artifact storage (logs, test results, etc).
- Ability to create active wallboards.
- Access control, proxyable.
This all maps to 3d printing; long print runs, logs and timelapses replace the builds and their artifacts. I want to get wifi connected printers (octoprint, duet, others) able to act as build slaves in Jenkins (the tool we use). It is not the best CI tool out there (depending on your definition of 'best') , but is properly open source, mature (some might say 'ripe' or 'decaying') and ideal for adapting.
I have already started work on this, but life is very distracting and so far it's just a vanilla install on my home server with a slave on my octoprint server that I can talk to and is able to access both printers USB serial ports. So far I managed to make the printers lights go on/off. Once my current madness calms down I plan to try passing some full prints this way.
- BUT; this is more of a demo; what I really want to do is load gcode from a git repo automagically to the SD card on the printers and then trigger the print from that with feedback.
- Printing from SD is IMHO a prerequisite since Jenkins can be an unreliable POS (quite fault intolerant) and I certainly would not trust a long running physical build job to it directly. Orchestrating a bunch of printers with it is another matter…
-
Something like this? (Click to enlarge)
This is a simple mockup; at the same time, it was built from bits and pieces of Christian Hammacher's Duet Web Control. Therefore, making it real is fairly possible.
Is there interest from the community? What style and/or overall screen layout would you like to see? Tabular, like above, growing as printers are added? Some other layout? Of course, it will self-adapt to a full width browser or a mobile phone sized screen.
What commands would you like to see, and associated with what status? (statuses? stati? You know what I mean.)
As David mentioned, these bits of web html/css/js would NOT load from a Duet. Absolutely no changes needed to the Duets that would be multi-monitored/controlled. This would load from the Internet (or the local disk on the PC/Mac/whatever, maybe). The only requirement to control a Duet would be that it is "reachable" from the browser where this is running; if you can load the given Duet's own DWC, this would work as well. In fact, those IP addresses above, even in the mockup, are links to the actual printer's DWC page.
The "Add Printer" button would open a dialog that gathers an IP and Password for the printer. The Multi-DWMC would figure everything else out when it connected. Edit: I accidently cut the "Add Printer" button out of the pic. At the moment, it is bottom center, below what's shown.
I can already think of a few buttons I haven't mocked up (yet) for a couple of states: "Printing" - a button to open the cam on that printer. "Idle" - A button to open the gcode files on that printer, and print a file that's clicked. Please suggest more.
P.S. Christian Hammacher is an incredible wizard. Now that I've REALLY looked at the DWC, I'm very impressed.
-
well i will be up for it
also im a web designer so i could help with the design of things if u require -
Cool, we have also asked Christian to have a look at this.
Assuming the "Duet print farm control " (DPFC?) Code is not big we should aim to load it from a Duet so no internet connection is required. Any Duet could be the webserver for that and then all the other could be added.
-
Something like this? (Click to enlarge)
…
What commands would you like to see, and associated with what status? (statuses? stati? You know what I mean.)I was thinking of showing the same printing/paused/pausing/resuming etc. status that DWC and PanelDue display, or "disconnected"; the filename if it is printing; the % complete if it is printing; a "Connect" button for a disconnected printer if we can't make connection fully automatic; and a "Go to printer" button. Possibly also a pause or Resume/Cancel button when the printer is in the appropriate state. I don't see much point in duplicating much more of the functionality in DWC.
As David mentioned, these bits of web html/css/js would NOT load from a Duet. Absolutely no changes needed to the Duets that would be multi-monitored/controlled. This would load from the Internet (or the local disk on the PC/Mac/whatever, maybe). The only requirement to control a Duet would be that it is "reachable" from the browser where this is running; if you can load the given Duet's own DWC, this would work as well. In fact, those IP addresses above, even in the mockup, are links to the actual printer's DWC page.
I see no reason why the page shouldn't be loaded from a Duet. It should use the same bootstrap css files as DWC. But the printer configuration data (e.g. IP addresses) will need to be stored somewhere.
-
Great, I will take this a step or two further, and then we can checkpoint on how to proceed. Eventually, I will publish on github.
A few notes:
-
This can/could be served from anywhere. A Duet (any one of the Duets available) for those who wish… it will probably be one html and one js that uploads to that Duet, and an alternate URL from that Duet to launch it. It could also be served from the local filesystem on a PC/Mac/Linux, Or the Internet, for those who don't want to store it locally.
-
The mockup is built on the same css file, and bits and pieces of the js from DWC. As such, the same mechanism that is used to store browser settings in DWC can (will) be used that being - local browser storage. This has some pluses/minuses, we can discuss more in the future.
-
David, thank you for the specifics on status and buttons/commands. Good list. I also agree with you about not going to far into duplicating function. I see this as an "Arms length" status page as much as anything. The Name/IP is clickable to launch full DWC at any time.
More to come…
-
-
A "Working Draft" is now ready for review. To load it:
-
Click this URL: http://danalspub.com/MultiDWMC/
-
After it loads, use the "Add Printer" button to enter the IP address (and password, if applicable) of at least one Duet that can be reached by regular Duet Web. You can add as many as you wish. You can delete the example, if you wish. Entries will be preserved across reloads.
-
Wait a few moments (about 10 seconds each for first connect, and first status update).
Comments welcome. Post right here in this thread.
P.S. This will eventually be able to be loaded from a Duet. For right now, loadable only from the internet.
-
-
If you re-visit after a few hours or days, be sure and refresh cache.
Example: In Chrome, do a Ctrl+Shift-r
-
Can it be changed to use hostnames instead of IP?
-
Can it be changed to use hostnames instead of IP?
Assuming that "normal" DWC would work with the same host-name, sure. I'll take the check for IP out.
Edit: Done. Be sure and Ctrl-Shift-r to see the change.
-
It works!
-
Hey, it looks great! Im having an issue connecting, I added the IP for one and waited but it fails. I dont have a password on this board so I left the password blank. Could that be the issue? I have Deleted and retried a few times just to be sure. Thanks for the help.
-
Hey, it looks great! Im having an issue connecting, I added the IP for one and waited but it fails. I dont have a password on this board so I left the password blank. Could that be the issue? I have Deleted and retried a few times just to be sure. Thanks for the help.
Blank password, meaning "just click done, or just hit enter" is fine. I use that. I've tested it (a little) with a password as well.
Things to check:
- Does DWC connect from that same browser/computer, etc. using the same IP (or name)
And, for curiosity: What OS and Browser? And what firmware on your Duet?
Thanks,
Danal
-
1.18 duet firmware
Chrome browser
Also DWC opens in the browserI just clicked done with the blank password field.
-
1.18 duet firmware
Chrome browser
Also DWC opens in the browserI just clicked done with the blank password field.
Very interesting. Close to what I'm using. Hmmm… I may have to put a debugging console log in temporarily... but... I've just changed the central dispatcher/connector to make it more reliable, so, if you don't mind, try again.
You should see "V1.02" in the block of notes, if things have successfully refreshed. (Ctrl+Shift+R).
-
V1.02 Now available.
Release Notes, 1.02:
- Speedup initial connect on page load.
- Cleanup wording around IP or HostName in several places
- Added "Disconnect and Close" button.
- Made individual line "Disconnect" buttons active.
- Added completion percentage to status while printing
Release Notes, 1.01:
- Allow hostnames (in addition to IP addresses)
- Fixed table sometimes not (re-)built properly after add or delete
-