Sunwait

Sunwait is a small C program for calculating sunrise and sunset, as well as civil, nautical, and astronomical twilights. It has features that make it useful for home automation tasks.

NOTE: I last updated sunwait in 2004. In 2013, Ian Craig forked sunwait as "sunwait4windows" and has added new features, such as: user specified twilight angles, and a simple polling function to indicate DAY or NIGHT. Ian indicated that he intends to port to the Raspberry Pi/Linux. Since I am not actively maintaining sunwait, Ian's version should be considered "current".


Originally, developed under Linux, it should work on any system with a C compiler and the C standard library. With some minor patches provided by George Gugulea, it will compile on Win32 - which results in sunwait.exe, but I haven't tested this extensively.

The feature that makes this program slightly unique is that it can be set to wait specific event (such as 5 minutes before sunrise), then exit. This makes it useful for 'cron' jobs or 'scheduled tasks' when you want something to happen relative to sunrise, sunset, or some other astronomical event.

For example, consider this line from my crontab:
01 00 * * * sunwait civ start 38.794433N, 77.069450W ; br b6 off

This line executes at at one minute after midnight, waits until the start of civil twilight, then runs the command br b6 off (which turns off my carriage light).

Thanks to Paul Schlyter, who wrote the math and released it as public domain in 1992.

Thanks to Dr. David M. MacMillan, who suggested some minor, but useful changes for the 20041208 version.

sunwait-20041208.tar.gz


usage: sunwait [options] [sun|civ|naut|astr] [up|down] [+/-offset] [latitude] [longitude]

latitude/longigude are expressed in floating-point degrees, with [NESW] appended

example: sunwait sun up -0:15:10 38.794433N 77.069450W
This example will wait until 15 minutes and 10 seconds before the sun rises in Alexandria, VA

The offset is expressed as MM, or HH:MM, or HH:MM:SS,
and indicates the additional amount of time to wait after 
(or before, if negative) the specified event.

options: -p prints a summary of relevant times
         -z changes the printout to Universal Coordinated Time (UTC)
         -V prints the version number
         -v increases verbosity

These options are useful mainly when used with the '-p' option
         -y YYYY sets the year to calculate for
         -m MM sets the month to calculate for
         -d DD sets the day-of-month to calculate for

         -h prints this help

Projects page, Dan Risacher