ZenTable - OctoPrint Scheduler

I have my ZenXY in the lobby of my company’s corporate office. I have had TONS of compliments on how neat it is. People love watching it.

My problem is though, I hate having to start up prints all the time. I would love to be able to have it run through random gcode files from 7am - 5pm every day. Is there a good plugin or way of doing this?

I have just installed the “Print Scheduler” plugin, but you can only select the files once for one specific day and time. I cannot set it to run during a certain time period Monday thru Friday.

1 Like

Could you do it all by layers and simulate time ?
I know that’s not the smart way but that’s probably the way I will do for now.

As in start it on Monday 7am, have it run sandify drawings for 10 hrs (5pm finish), wait for 14 hours, then repeat? So 1 long drawn out GCODE for 120 hrs (5 days).

That could possibly work. Can I loop gcode? If not, I can just copy and paste that sequence 5 times for Monday - Friday.

I recently started playing around with writing octoprint plugins. They’re not difficult. They do require experience with python, js, and jinja. I had limited js and jinja experience, but the example walks you through the basics. Then you can steal code from other plugins :slight_smile:

I might start with a fork of the print scheduler plugin and see if you can remove the day/time and have it do it daily instead.

1 Like
  1. If you had a 10 hour long gcode, you could schedule it to start at 7am.
  2. You can write gcode that calls other gcode. If the gcode is stored on the sdcard, the. There is gcode to read those other files. It is a bit tricky, because the files are named in dos format (8.3 length). It is honestly easier to rename your files to something like a1.gco than try to deal with squares~1.gco.

So you could time a few patterns, and then have one gcode file that says, play pattern a1.gco, play pattern b3.gco, etc for 10 hours and then schedule that playlist to run at 7am.

If that doesn’t work for some reason, you could also just concatenate the patterns together to make 10hr files. Starting with one and then if you’re bored, make new ones for each day of the week.

1 Like

Do you have any pictures of the table that you would like to share?

1 Like

Here is the build forum for my table.

My bad. I didn’t search before I asked.

Your table looks great!

I am just going to pretend like this all registered in my brain and made sense. But from what I do understand, the calling of other gcode files would be a great idea. But that would be with running the machine offline with an SD card. I run my table solely off of OctoPrint so a plugin would be the most beneficial.

This would be what I am looking for. A modification of this current plugin so that instead of just selecting one day/time and the file exiting the queue when it is finished I could select M-F and have that schedule saved as a repeating playlist of sorts.

Oh no problem! And thank you, I have a set of parts printed up to build another one. I am addicted to starting new projects.

I have several sandify patterns where I make use of layers to draw one thing over another. They typically start with a wipe, and then go on to other things. I alternate outside to center patterns with center to edge ones to have good transitions.

Many pattern layers have small motif designs in the corners. I have ones that have playing card suits (spades, hearts, diamonds, clubs) and other ones are more randomised. Some patterns build up a message… I have a library of 12 or so that are more than an hour long.

1 Like

You too haha
Who ever dies with the most toys wins

Yeah I have files for the my machine that are 5+ hours. I have no problem with making a large gcode file that is layered with patterns. Just need to automate the start and stop of the machine with the time of day.

Well Marlin has an autostart feature, if your table is running Marlin firmware

Gcode programs can call other gcode programs via M32

I don’t think GRBL or FluidNC has this feature.

RepRapFirmware is gcode everywhere so the config.g is a gcode file that can call other gcode files… or just be one itself after the config stuff is done.

With auto start, basically you can have a playlist queued that will just start when you turn the table on in the morning.

1 Like

Are you still running Marlin?

I think octoprint can upload gcode to the marlin sd card (it is very slow, but works).

Right. This was my thought with the autostart.

  1. At the beginning of the day, have several autox.g files prepared on the SD card. Power on the table, and they start. Say 8 files, approximately an hour apiece runtime for an 8 hour workday.

  2. During the morning, replace files 5, 6, 7, and 8.

  3. After lunch, replace files 1, 2, 3, snd 4.

  4. At the end of the day, power off the table… or don’t, it will stop when the files end.

If you don’t update the files… not a problem, it will just repeat yesterday’s patterns.

1 Like

Could use a smart outlet and setup an on/off time for the table.

1 Like

Now we are on to something. This combined with the autostart that Dan is talking about may be the best way to do it. Ideally, this is as hands-off as possible. Turning it on and off manually each morning is not ideal, so the smart outlet will handle that. Then I can use the autostart to run the gcode full of patterns for 8 or 9 hours until the outlet shuts off.

That’ll work I think!

1 Like

You should see my homeassistant scripts.

I have got it running exactly how I wanted. I have the Rasberry Pi on constant power, so the server is always up. But I have the table power on a smart plug. When the plug and table turn on, the latest uploaded print will begin. Then it turns off in the evening and repeats the next day.

I am using the PortLister plugin to autodetect when a new printer has connected (turned on) and then I am using the AutostartPrint plugin to begin the print after a connection is made.