TimexDatalinkCaldav
TimexDatalinkCaldav is a simple Ruby gem designed to sync events from a CalDAV server or an ical formatted ics file to a Timex Datalink watch. It can also be used as a standalone command-line interface (CLI) tool.
Pre-requisites
If you need to install Ruby, follow the Ruby installation instructions here.
Installation
To install the TimexDatalinkCaldav gem, simply run:
gem install timex_datalink_caldav
Or add this line to your application's Gemfile:
gem "timex_datalink_caldav"
And then execute:
bundle install
Usage
As a Gem
Here's an example of how to use the tool in your Ruby code:
require 'timex_datalink_caldav'
client = TimexDatalinkCaldav::Client.new(your_username, your_password, your_server_uri, your_device, your_protocol_version, days_forward)
client.parse_events
client.write_to_watch
As a CLI Tool
After installing the gem, you can use it as a CLI tool. You can specify the CalDAV server details directly on the command line:
timex_datalink_caldav -u https://caldavendpoint.com -n your_username -p your_password -d your_device -a your_protocol_version -f days_forward
Please replace https://caldavendpoint.com, your_username, your_password, your_device, your_protocol_version, and days_forward with your actual CalDAV server URI, username, password, serial device, protocol version, and number of days to look forward for events, respectively.
Or you can provide these details in a configuration file:
timex_datalink_caldav -c config.yml -a 1 -d /dev/tty.usbmodem0000000000001 -f 7
The configuration file should be a YAML file in the following format:
endpoints:
- uri: https://www.google.com/calendar/dav/[email protected]/events
user: [email protected]
password: app_password
- uri: https://caldavendpoint2.com
user: your_username2
password: your_password2
- uri: https://icalendpoint.com/example.ics
The device is a serial device that flashes an led when it receives data. On Linux, this is usually /dev/tty*. On macOS, this is usually $(ls /dev/tty.usbmodem* | head -n 1). On Windows, this is usually COM1.
If you want to use this, I highly recommend pairing it with the Raspberry Pi Pico and this project or this one. It is the cheapest and easiest way to get a serial device that works with the Timex Datalink watch.
Notes
This gem is not affiliated with Timex, nor is it affiliated with any CalDAV server. It is simply a tool that I wrote to sync my events from my CalDAV server to my Timex Datalink watch.
This gem uses the anniversary feature for full day events, and the appointments feature for events with a start and end time.
Thanks
- This project would not exist without the hard work of the people who reverse engineered the Timex Datalink protocol. I would like to thank them for their hard work. Mainly this gem https://github.com/synthead/timex_datalink_client