Sunwait

Run a cron at sunrise/sunset or with some offset.

https://github.com/risacher/sunwait

Examples:

$ sunwait -p 33.640411N 84.419853W
Using location:             33.640411N, 84.419853W
Date:                       20 Sep 2019 
Local time:                 18:31 
Day length:                 12:13 hours
With civil twilight         13:00 hours
With nautical twilight      13:59 hours
With astronomical twilight  14:57 hours
Length of twilight:  civil   0:23 hours
                  nautical   0:52 hours
              astronomical   1:22 hours
Current specified time zone: EDT (-4 from UTC) 
Sun transits meridian 1330 EDT
                   Sun rises 0725 EDT, sets 1936 EDT
       Civil twilight starts 0700 EDT, ends 2001 EDT
    Nautical twilight starts 0631 EDT, ends 2030 EDT
Astronomical twilight starts 0601 EDT, ends 2059 EDT
$ sunwait -v sun down +1:19:00 33.640411N 84.419853W; /bin/date

RPM is on rpmfind.net