automating production equipment using a chromebox and a scheduling server

Have I mentioned before how I love automation? Efficiency at its best.

One of the things I like to automate is the turning on of production equipment on Sunday mornings. It’s nice to walk in for the day and already have equipment turned on and ready to go. It saves me time so I can focus on other things.

In the past, we’ve used crontab on some of the production Macs to send HTTP requests via CURL commands. It worked, but it’s hard to manage when there’s a lot of commands to keep up with. We even tried using GUI interfaces for crontab like Cronnix, but the end result is the same. How do we track and manage all of the commands from a central place?

I came across a tool awhile back called Cronicle. It’s a multi-server task scheduler and runner, with a web based front-end UI. It’s essentially cron but written in Node.js. It can create scheduled and repeating jobs, perfect for ministry activities that tend to repeat.

Cronicle screenshot from their Github repository.

I knew that I wanted to set up a dedicated server to run Cronicle for us. Awhile back, I picked up a used Asus Chromebox CN60 off eBay for $37. I originally bought it hoping to be able to use it with my LiveCaption project, but that didn’t work out. However, the specs on the box are just as good (if not better) than a Raspberry Pi, so I decided to turn it into the server for this project.

Pretty small so it’s not too bad sitting in the rack!

It’s a fairly simple process to remove ChromeOS and install Ubuntu. I won’t detail that here but you can read about it. Installing Cronicle is just as easy if you follow the instructions on the Cronicle Github repo.

Once the server is up and running, it’s time to make some events! I decided to break our scheduled events into some basic categories:

  • Auditorium 1 (events for equipment primarily in Aud 1 related to regular ministry activities like Sunday mornings)
  • Auditorium 2
  • Campus Speakers
  • Automated Video Recording
  • General

For example, I have a scheduled event for every Sunday, at 6am, to turn the Auditorium 1 projectors on. It sends an HTTP request using the built-in Cronicle HTTP Request plugin to my Dashboard Production Control system which contains the code to turn the projectors on/off.

Screenshot of an event

I also have the lights turn on using my midi-relay software. It automatically routes the side screens on our Ross Carbonite switchers to the pre-service slides, turns on the campus speakers, etc.

A really nice feature of Cronicle is the ability to add your own plugins. They can be written in virtually any programming language and receive JSON input from Cronicle, so you can customize parameters and commands that get passed to them.

For some of our needs, I’ve created a few plugins so far which I have made available on my Github repository:

  • Rosstalk – to send commands to Ross Carbonite switchers
  • VICREO Listener File Opener – to open files, scripts, and programs on remote devices (requires the free VICREO Listener program)
  • VICREO Listener Hotkey – to send hotkey commands to remote devices
  • Videohub – to change routes on Blackmagic Videohub routers

I decided to write all of my plugins in Python because the linux server can run them right out of the box with little modifications needed, especially since they are just using simple TCP protocols to send information.

Some of the events I have created so far.

I’m always forgetting to run the video recording, so I automated that. We have a speaker system throughout the campus that has various amps that need to be turned on, so now we can turn them on with a schedule, and even start Spotify playing at a specific time! (This is done by executing an AppleScript on the computer running Spotify.)

We also have an 8-week event coming up in the fall for a Bible study that is at 6am in Auditorium 2. The tech needs are minimal, but they want lights on, a microphone, video recorded, to project some slides, etc. So, we created events to:

  • Open Vista (VICREO File Opener)
  • Go to a specific light cue on a specific cue list (midi-relay)
  • Turn on the projectors (HTTP request)
  • Turn off the LED wall (HTTP request)
  • Take the PTZ camera to a specific preset position (HTTP request)
  • Turn on a mic (midi-relay to a Raspberry Pi connected to the S6L via MIDI)
  • Route the program audio and video to the Ki Pro recorder (Videohub)
  • Start the Recording

And then later in the morning at specific times, everything will turn off and go back to normal. We will train someone to be on-site in the event of a change in plan, but this will greatly minimize the need to train someone all of the necessary buttons to press to turn everything on in the right order – it will just happen for them automatically based on the time of day!

Here’s a walkthrough video of it in action:

Overall, I’m very glad to have a centralized system in place to manage these scheduled events to automate our systems and am looking forward to making it even better as we continue to use it. If you want to try Cronicle out for yourself, you can read more about it on their website. It’s a free tool so definitely worth checking out. I have made my simple plugins free as well, and you can get them here:


Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s