Skip to content
/ solar Public

Elixir library for calculating sunrise and sunset times for a location on a specified date.

License

Notifications You must be signed in to change notification settings

bengtson/solar

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Solar - A Solar Event Calculator

Provides sunrise and sunset times for a provided location and date.

The algorithms/math used are from:

https://github.com/mikereedell/sunrisesunsetlib-java

Code has been completely rewritten to take advantage of the Elixir language.

The event function takes a minimum of two parameters, the event of interest which can be either :rise or :set and the latitude and longitude. Additionally a list of options can be provided as follows:

  • date: allows a value of either :today or an Elixir date. The default if this option is not provided is the current day.
  • zenith: can be set to define the sunrise or sunset. See the Zeniths module for a set of standard zeniths that are used. The default if a zenith is not provided is :official most commonly used for sunrise and sunset. timezone: can be provided and should be a standard timezone identifier such as "America/Chicago". If the option is not provided, the timezone is taken from the system and used.

Examples

The following, with out any options and run on December 25:

iex> Solar.event (:rise, {39.1371, -88.65})
{:ok,~T[07:12:26]}

iex> Solar.event (:set, {39.1371, -88.65})
{:ok,~T[16:38:01]}

The coordinates are for Lake Sara, IL where sunrise on this day will be at 7:12:26AM and sunset will be at 4:38:01PM.

The latlong library can be used to convert various latitude and longitude formats to the signed numeric decimal format needed for position in the event call.

Road Map

  • Have an optional GenServer that can emit calls based on parameters:
    • :rise, +0, :repeat, fn spawns a process to run the function at sunrise_for_date each day.
    • :set, -20, fn runs function 20 minutes before sunset.
  • Add other events such as :equal where daylight and night are equal.
  • Add winter and summer solstice.
  • Add earliest sunrise and latest sunset.

Installation

If available in Hex, the package can be installed as:

  1. Add solar to your list of dependencies in mix.exs:
```elixir
def deps do
  [{:solar, "~> 0.1.0"}]
end
```

About

Elixir library for calculating sunrise and sunset times for a location on a specified date.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages