Skip to content

chaunceygardiner/weewx-forecast

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

44 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

This is a forecasting extension for the weewx weather system.
Copyright 2013-2020 Matthew Wall
Distributed under terms of the GPLv3

This package includes the forecasting module, unit tests, and a sample skin.
The following forecast sources are supported:

  US National Weather Service (NWS)
  the weather underground (WU)
  open weathermap (OWM)
  UK Met Office (UKMO)
  Aeris Weather
  World Weather Online (WWO)
  Dark Sky (DS)
  Zambretti
  tide predictions using xtide

The forecast extension includes a few independent parts:

 - a forecast engine that downloads and/or generates forecast data
 - a database schema that is normalized to store data from various sources
 - a search list extension for using forecast data in reports
 - a pre-defined forecast_table for inclusion in reports
 - a pre-defined forecast_strip for inclusion in reports
 - icons for cloud cover, storms, rainfall, snow, etc.

The forecast_table displays forecast data in a table with time going down the
page.  The forecast_table.inc file is a cheetah template designed to be
included in other templates.  At the beginning of the file is a list of
variables that determine which forecast data will be displayed.

The forecast_strip displays forecast data in a compact form with time going
from left to right.  The forecast_strip.inc file is a cheetah template designed
to be included in other templates.  At the beginning of the file is a list of
variables that determine which forecast data will be displayed.


===============================================================================
Pre-requisites

If you want NWS forecasts, determine your 3-character forecast office
identifier and 6-character location identifier:

  http://www.nws.noaa.gov/oh/hads/USGS/

If you want WU forecasts, obtain an api_key:

  http://www.wunderground.com/weather/api/

If you want OWM forecasts, obtain an api_key:

  http://openweathermap.org/appid

If you want UK Met Office forecasts, obtain an api_key:

  http://metoffice.gov.uk/datapoint

If you want Aeris forecasts, obtain a client id and client secret:

  http://www.aerisweather.com/account

If you want WWO forecasts, obtain an api_key:

  https://developer.worldweatheronline.com/auth/register

If you want DS forecasts, obtain an api_key:

  https://darksky.net/dev/register

If you want tide forecasts, install xtides:
  sudo apt-get install xtide
Then determine your location:
  http://tides.mobilegeographics.com/

Note: current versions of debian (bookworm) do not include xtide.
This is perhaps true of other distributions.
You'll need to build it yourself and set the 'prog' variable in the xtide
section.
Example (building xtide)
Note: the first two lines change to your home directory and set the mode on your home directory
      such that the weewx user can find the tide program.
  cd
  chmod 755 .
  wget https://flaterco.com/files/xtide/xtide-2.15.5.tar.xz
  (decompress and then cd to xtide-2.15.5 directory)
  sudo apt-get install libpng-dev
  sudo apt-get install libtcd-dev
  ./configure --with-x=no
  make tide
Example (setting prog variable to point to where you have built xtide):
[Forecast]
    ...
    [[XTide]]
        location = Palo Alto Yacht Harbor, San Francisco Bay, California
        prog = /home/jkline/software/xtide-2.15.5/tide
You'll still need to install xtide-data.  Example:
    apt install xtide-data
and you'll need to create an /etc/xtide.conf file to tell xtide where to find the harmonic
data you installed with xtide-data.  Example:
/etc/xtide.conf:
    /usr/share/xtide
(xtide-data installs harmonic data in the /usr/share/xtide directory)



===============================================================================
Installation instructions:

1) run the installer:

For WeeWX 5:

weectl extension install weewx-forecast-3.5.zip

For WeeWX 4:

wee_extension --install weewx-forecast-3.5.zip

2) modify weewx.conf for your location:

[Forecast]
    [[NWS]]
        lid = MAZ005                        # specify a location identifier
        foid = BOX                          # specify a forecast office identifier
        lid_desc = Framingham-Middlesex MA  # (optional) specify a lid description for cases
                                            # where the lid is repeated in the forecast file
                                            # and the user does not want the first entry for that lid.
                                            # Just omit this entry entirely unless you have examined
                                            # the forecast file and know the description of the repeated
                                            # lid entry that you want to use.
    [[WU]]
        api_key = XXXXXXXXXXXXXXXX   # specify a weather underground api_key
        # A location may be specified.  If it isn't, your stations lat/long
        # will be used.
        #
        # To specify the location for which to generate a forecast, one can specify
        # the Geocode (lat, long), IATA Code, ICAO Code, Place ID or Postal Key.
        #
        # These options are listed here:
        # https://docs.google.com/document/d/1_Zte7-SdOjnzBttb1-Y9e0Wgl0_3tah9dSwXUyEA3-c/
        #
        # If none of the following is specified, the station's latititude and longitude
        # will be used.  If more than one is specified, the first will be used according
        # to the order listed here.
        #
        # geocode = "33.74,-84.39"
        # iataCode = DEN
        # icaoCode = KDEN
        # placeid = 327145917e06d09373dd2760425a88622a62d248fd97550eb4883737d8d1173b
        # postalKey = 81657:US
    [[OWM]]
        api_key = XXXXXXXXXXXXXXXX   # specify an open weathermap api_key
    [[UKMO]]
        api_key = XXXXXXXXXXXXXXXX   # specify a UK met office api_key
        location = 2337              # specify code for UK location
    [[Aeris]]
        client_id = XXXXXXXXXXXXXXXX      # specify client identifier
        client_secret = XXXXXXXXXXXXXXXX  # specify client secret key
    [[DS]]
        api_key = XXXXXXXXXXXXXXXX   # specify a dark sky api_key
    [[XTide]]
        location = Boston            # specify a location

3) restart weewx:

sudo /etc/init.d/weewx stop
sudo /etc/init.d/weewx start

This will result in a skin called forecast with web pages that illustrate how
to use the forecasts.  See comments in forecast.py for detailed customization
options.


===============================================================================
Credits:

Icons were derived from Adam Whitcroft's climacons.

About

forecasting extension for weewx

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Python 83.4%
  • NASL 12.3%
  • HTML 3.1%
  • CSS 1.2%