fabriceb / gcalcron

Simple multi-platform GUI for CRON: manage your tasks scheduling with Google Calendar !
42 stars 13 forks source link

GCalCron

The goal of GCalCron is to use Google Calendar as a GUI to your crontab. It enables you to have at the same time:

A common use of this tool is to administer a home automation server. Using GCalCron, changing your wake-up time before going to bed is as easy as changing the time of the associated Google Calendar event.

History

NEW in version 3

GCalCron 3 is a rewrite of the Google Calendar API part to make it compatible with Google API v3

NEW in version 2.0

GCalCron 2 is a complete rewrite of GCalCron by Patrick Spear. See http://www.pfspear.net/projects/gcalcron for his first version.

Features

Install

GCalCron depends on the google api python client library:

Clone the GCalCron repository:

git clone https://github.com/fabriceb/gcalcron.git $HOME/gcalcron

Run the script:

cd $HOME/gcalcron
python gcalcron.py

The first time it runs, it will need a client_secrets.json file. To get one, go to https://cloud.google.com/console#/project, create a new project and give it access to the Google Calendar API

If you havent already activated the consent screen in your console go to >API's & auth> Consent Screen. Ensure to select your email address at the top and give the product a name.

Then go in the APIs & auth > Credentials menu and hit the "Download JSON" in the OAuth "Client ID for native application" section. This will get you a file that you need to move inside the gcalcron folder and rename client_secrets.json

It will also need the id of the Google Calendar you intend to use for tasks scheduling. If you create a dedicated calendar for this (recommended) it will look like this: 1234567890abcdefghijklmnop@group.calendar.google.com

Follow these instructions to find your Calendar ID:

This has to be done only once, the OAuth login token is stored in a credentials.dat file and the Calendar ID in your settings file (default: $HOME/.gcalcron)

Be aware that this OAuth login token gives read access to all your Google calendars! Please keep it in a safe place and do not use this program on a machine on which you are not the only root user!

Add python gcalcron.py to your cron. Choose your desired sync frequency, but it will only impact the delay between a change in Google Calendar and it being taken into account on your system.

For example, to sync every 10 minutes, run crontab -e, and add the following line:

PATH=/opt/bin:/bin:/usr/bin:/sbin:/usr/sbin
* * * * * python /your/home/directory/gcalcron/gcalcron.py

Usage

-60: /usr/bin/python /home/automation/heating_on.py
-10: /usr/bin/python /home/automation/boiler_on.py
-2: /usr/bin/python /home/automation/boiler_off.py
/usr/bin/php /root/phpdenon/wakeup.php
end: /usr/bin/python /home/automation/heating_off.py

Development

To run DocTests: python -m doctest -v gcalcron.py


Special section for LaCie Network Space 2 hackers

The LaCie Network Space 2 http://lacie.nas-central.org/wiki/Category:Network_Space_2 is a great-looking silent NAS. And most importantly it is easy to enable ssh, so it is a perfect choice for a discrete home automation solution.

I wrote GCalCron for such a device, here are the additional steps I needed to make it work: