When I was working on Backup Pro almost 18 months ago I realized that I needed to add in a way to schedule the backups. I mean, a backup application that doesn't allow for automation is pretty worthless, right? So I added in the ability for Backup Pro to operate on a Cron level like a good little monkey but the feedback I was getting was that Cron was confusing and a lot of my customers, and their clients, just couldn't grasp it. Fair enough; Cron is confusing.
So, I started thinking about the problem. It seemed to me that the problem of automation within ExpressionEngine was bigger than just Backup Pro. Lots and lots of add-ons are setup to be used with Cron and if their experience was anything like mine those devs were getting a bit of grief over the complexity too. And this makes sense; most websites could use some sort of automation. Within WordPress this is easy; developers have access to the wp-cron functionality so we can actually setup our own rules for automation and scheduled code execution. A very handy set of functionality that ExpressionEngine was sorely lacking.
Enter Automat:ee. Automat:ee is an interface to automate your ExpressionEngine site. You can set your installed plugins and modules to execute on a schedule, create standard Cron routines like shell commands, and even set URL requests using traditional Cron syntax from within your ExpressionEngine control panel.

There are really 2 components to Automat:ee; the Cron Executor (which gets installed once and never really thought of again) and the Control Panel interface that Crons are setup in.
The pseudo Cron template tag is the easiest to setup but it's also the least accurate. Just include a template tag in a template that gets called often. Pseudo Cron works by determining if any Crons need to run on every page request. Essentially, every time a page gets requested (that has the pseudo Cron template tag in it) Automat:ee checks the stored Crons and looks for any that need to run, and runs them if found. The downside to this is that if your site doesn't get any visitors during the expected Cron schedule the task won't run. This makes it impossible to, for example, send a Mailing list email at exactly 10:45PM on October 31 2012. Still, if Cron is scary and you have some latitude on scheduling, pseudo Cron is perfectly acceptable.
The True Cron is a command that can just be pasted into your system's crontab. True, you have to know a little about Cron to get this setup, but once it is your clients can handle things from there adding all the Crons they want without having to know anything about Cron. This would be the ideal scenario for installation; set it up to fire every minute and you have complete control over scheduling.
The main Automat:ee page is the View Cron list. It contains a breakdown of all the setup Crons within Automat:ee and gives some details such as their schedule, how many times a Cron has been ran, when a Cron was last ran, and a link to test the Cron to ensure it's working properly.

From here you can manage your Crons (add new ones, edit existing ones, and delete things). It's also where you can test and check your Crons to make sure everything is cool. Just click Run and an Ajax request gets sent off to execute the Cron exactly as if it was ran through the Cron Executor. If you have the debugger enabled (oh yeah, there's a small debugging mechanism) Automat:ee will send you an email with any output from the Cron.
When adding or editing Crons you enter a name, set the status, select your schedule, choose your type (module, plugin, CLI, or url), and setup the actual command you want to run.
Automat:ee comes equipped with 9 standard schedules and offers the ability to create your own custom schedules using the standard Cron syntax if you need granular control. For example, to run a Cron every ten minutes you'd enter a custom time of "0,10,20,30,40,50 * * * *". This allows for some pretty specific execution times like every Friday at 9 minutes past the hour every hour except 10PM.

The Cron Type section is likely the most important piece; what do you want to happen? If you choose GET URL or Command Line you'll just input the URL or command you want to execute. Simple.
Oh the other hand, if you choose Module or Plugin you'll have to choose the module or plugin from the drop down and enter the name of the method you want to execute. On this site, I have Automat:ee tasks for Backup Pro to backup my database once a day, my files once a week, sync with devot:ee every 10 minutes to pull orders, and run the Securit:ee File Monitor every 10 minutes.
So, I started thinking about the problem. It seemed to me that the problem of automation within ExpressionEngine was bigger than just Backup Pro. Lots and lots of add-ons are setup to be used with Cron and if their experience was anything like mine those devs were getting a bit of grief over the complexity too. And this makes sense; most websites could use some sort of automation. Within WordPress this is easy; developers have access to the wp-cron functionality so we can actually setup our own rules for automation and scheduled code execution. A very handy set of functionality that ExpressionEngine was sorely lacking.
Enter Automat:ee. Automat:ee is an interface to automate your ExpressionEngine site. You can set your installed plugins and modules to execute on a schedule, create standard Cron routines like shell commands, and even set URL requests using traditional Cron syntax from within your ExpressionEngine control panel.

There are really 2 components to Automat:ee; the Cron Executor (which gets installed once and never really thought of again) and the Control Panel interface that Crons are setup in.
Cron Executor
The executor is the portion that executes the setup Crons. There are two available; a pseudo Cron template tag that gets placed in an ExpressionEngine template and a True Cron command that gets pasted into your systems crontab.The pseudo Cron template tag is the easiest to setup but it's also the least accurate. Just include a template tag in a template that gets called often. Pseudo Cron works by determining if any Crons need to run on every page request. Essentially, every time a page gets requested (that has the pseudo Cron template tag in it) Automat:ee checks the stored Crons and looks for any that need to run, and runs them if found. The downside to this is that if your site doesn't get any visitors during the expected Cron schedule the task won't run. This makes it impossible to, for example, send a Mailing list email at exactly 10:45PM on October 31 2012. Still, if Cron is scary and you have some latitude on scheduling, pseudo Cron is perfectly acceptable.
The True Cron is a command that can just be pasted into your system's crontab. True, you have to know a little about Cron to get this setup, but once it is your clients can handle things from there adding all the Crons they want without having to know anything about Cron. This would be the ideal scenario for installation; set it up to fire every minute and you have complete control over scheduling.
Control Panel Interface
Once the Cron Executor is installed it's time to start adding your Crons. By default, when Automat:ee is installed it'll check for any add-ons it knows has Cron functionality and install them for you. For instance, if it finds Backup Pro (and ish), or Securit:ee , or CartThrob , it'll install Crons to handle backups, the File Monitor, and the CartThrob Garbage Collection respectively. It also installs a couple example Crons just to help get you started too. (BTW, if you want your add-ons Crons to be automatically installed shoot me a note and I'll add it.)The main Automat:ee page is the View Cron list. It contains a breakdown of all the setup Crons within Automat:ee and gives some details such as their schedule, how many times a Cron has been ran, when a Cron was last ran, and a link to test the Cron to ensure it's working properly.

From here you can manage your Crons (add new ones, edit existing ones, and delete things). It's also where you can test and check your Crons to make sure everything is cool. Just click Run and an Ajax request gets sent off to execute the Cron exactly as if it was ran through the Cron Executor. If you have the debugger enabled (oh yeah, there's a small debugging mechanism) Automat:ee will send you an email with any output from the Cron.
When adding or editing Crons you enter a name, set the status, select your schedule, choose your type (module, plugin, CLI, or url), and setup the actual command you want to run.
Automat:ee comes equipped with 9 standard schedules and offers the ability to create your own custom schedules using the standard Cron syntax if you need granular control. For example, to run a Cron every ten minutes you'd enter a custom time of "0,10,20,30,40,50 * * * *". This allows for some pretty specific execution times like every Friday at 9 minutes past the hour every hour except 10PM.

The Cron Type section is likely the most important piece; what do you want to happen? If you choose GET URL or Command Line you'll just input the URL or command you want to execute. Simple.
Oh the other hand, if you choose Module or Plugin you'll have to choose the module or plugin from the drop down and enter the name of the method you want to execute. On this site, I have Automat:ee tasks for Backup Pro to backup my database once a day, my files once a week, sync with devot:ee every 10 minutes to pull orders, and run the Securit:ee File Monitor every 10 minutes.