Repeating reminders for Pebble smartwatches.
Find a file
2025-11-07 16:31:39 -06:00
src Delete src/c/config.c 2025-11-07 16:21:10 -06:00
.gitignore get next reminder based on cron rules 2025-11-04 16:38:22 -06:00
package.json fancier window layout 2025-11-07 15:09:33 -06:00
README.md Update README.md 2025-11-07 16:31:39 -06:00
wscript initial commit 2025-11-04 08:57:39 -06:00

Crontabble

An app that lets you define repeating reminders using cron-like syntax. The configuration is stored on the Pebble, and reminders are delivered without relying on being connected to a phone.

Installing

Download crontabble.pbw from the latest release and sideload it to your Pebble (you can use the Pebble Core app on Android, and there is also an iOS version, but I don't know if it supports sideloading). After it's loaded, open the Crontabble settings page in the Pebble app. You will then need to paste valid configuration into the provided text box and click the "Save" button.

Configuring

Currently the configuration system is very bare bones and has almost no validation. Invalid configuration sent to the watch will be silently ignored. The configuration uses a subset of cron expressions, and looks like this:

0 8,20 * * * A reminder to show
0 9 13 11 * Developer's birthday!
0 10 * * 0 Sunday fun day!

Each line consists of 5 cron-like expressions followed by the reminder to show at the times specified by those expressions. The first five fields are defined as such:

  1. Minutes - can be * to match every minute (probably don't do that), or a single or comma-separated numerical values between 0 and 59 indicating the minute value you want to alert on. Examples:
    • 0 - on the hour
    • 30 - half-past the hour
    • 0,15,30,45 - every 15 minutes
  2. Hours - can be a * to match every hour, or a single or comma-separated numerical values between 0 and 23 indicating the hour value you want to alert on. Examples:
    • 0 - 12am
    • 8,20 - 8am and 8pm
  3. Day of the month - can be a * to match every day, or a single or comma-separated numerical values between 1 and 31 indicating which month day you want to alert on. Examples:
    • 1 - first of the month
    • 1,8,15,22 - on the first, 8th, 15th, and 22nd of the month
  4. Month - can be a * to match every month, or a single or comma-separated numerical values between 1 and 12 indicating which month you want to alert on. Examples:
    • 11 - November
    • 1,4,7,10 - January, April, July, and October
  5. Week day - can be a * to match every week day, or a single or comma-separated numerical values between 0 and 6 indicating which day of the week you want to alert on. Examples:
    • 0 - Sunday
    • 1,3,5 - Monday, Wednesday, and Friday
    • 5,6 - Friday and Saturday

Everything after the final week day segment is the text you want to display on the alert at the times specified by the cron expressions. Here are some practical examples:

  • 0 8,20 * * * Take your meds! - Will alert every day at 8am and 8pm.
  • 0 21 * * 1,3,5 Call your mom! - Will alert every Monday, Wednesday, and Friday at 9pm.
  • 0 9 13 11 * Developer's birthday! - Will alert every Nov. 13 at 9am to remind you that it is a very important day.
  • 0 10 1,2,3,4,5,6,7 * 0 Pray to the FSM! - Will alert at 10am on the first Sunday of every month.
  • 30 8,12,16,20 * * * Drink water! - Will alert every 4 hours from 8:30am to 8:30pm every day.

Note that single-digit numbers should not be zero-padded (i.e., write 8 and not 08). If two alerts are scheduled to show at the same time, you will only see the first one, so if you have alerts that could overlap you should stagger them by a few minutes if you want to see them all. Also note that there are likely bugs, so you shouldn't completely rely on this app as your sole source of reminders. When you reboot your Pebble you may need to load the Crontabble app at least once before it will schedule the next alert (if you stop getting alerts for some unknown reason, loading the app will always re-schedule the next reminder).

As noted, illegal reminder definitions will be ignored. In the future the settings page may be updated with better validation, but in the meantime you could send each of your reminder definitions one at a time and open the app and verify that the upcoming reminder display is what you expect, and then once you've validated them individually re-send them all together. Note that if you try to do something weird like schedule an alert for Feb. 31 you may send your watch into an infinite loop, so don't do that.

The phone app currently has no way to retrieve or show your existing configuration on the Pebble, so I recommend saving your reminder config in a file somewhere if you ever need to reference it or make changes. You can use something like LocalSend to copy it to your phone and paste it into the Pebble app that way.