WeatherHub
There are two problems with weather sites: 1) scraping info off their pages is futile, due to constant changes, 2) the weather feeds come and go every few years. The idea behind WeatherHub is to centralize multiple feeds and output the weather data as consistent, uniform tags in Rainmeter. This way, if a feed goes dead, it can be easily replaced with another, with no changes to the skin, except for the feed variable. For any feed, WeatherHub can use any TWC-compatible icon set. Supported feeds: Dark Sky, AccuWeather, Weatherbit, OpenWeather. Dark Sky no longer accepts new sign-ups, existing keys will work until the end of 2021.
Settings
"Global settings" apply to the entire plugin | |
Latitude |
Latitude and longitude are in decimal degrees, S and W are negative. See here, here or Wikipedia on how to obtain them |
Longitude |
|
Language code |
Language code for descriptions (default en). Different sites support different sub-levels, try the closest one |
Weekday |
Short: use shorter versions (e.g. "Mon" instead of "Monday"). Translate: use names native to your OS. |
Decimal places |
Decimal precision for reported numbers |
WakeDelay | After PC wake-up, wait this many secs before connecting [8] |
WakeRetry | After PC wake-up, try connecting this many times [3] |
Precip. threshold | Determines the Precipitation Boolean value |
"Feed settings" apply to the selected feed | |
Feed |
The feed you're adjusting the settings for |
Locate |
Some feeds will accept your external IP as location |
Location | Used when a feed needs you to specify your location in a particular way. See Feed info below |
API key | Your API key for the feed | Icon set folder |
Icons to use for this feed. If you include the variable [FEED] in the path, it will expand into the feed handle (*) |
Interval | To limit requests, WeatherHub retrieves data at this interval (minutes), then caches it. Your measure and meter UpdateDividers have no bearing on this, only on how often your meter is redrawn. Your UpdateDivider shouldn't be more frequent than twice this connection interval |
TWC compatible |
Convert the feed's icon names to TWC-style names. See the TWC_icon_mapping.txt file in the demo skin folder | Img type |
Icon image format |
(*) The feed handle is a short version of the feed name: DarkSky (for Dark Sky) or Accu (for AccuWeather), used within WeatherHub. See Feed Info below.
Instructions
Note: before using WeatherHub , you'll need a (free) API key (links below)
In Rainmeter, create a WeatherHub plugin measure. In your weather meters, use the GetData(feed, tag) function in a section variable to get the desired info from the plugin. The info tags, listed below, correspond to values common to most feeds. WeatherHub will return a string with the tag replaced by the actual value. Here's an example (see also the included demo skins):
[msWeatherHub] Measure=Plugin Plugin=WeatherHub UpdateDivider=900 DynamicVariables=1 ; Current temperature (F) [mCurrTempF] Meter=String UpdateDivider=900 Text=[&msWeatherHub:GetData("Accu","(c_tempF)")] DynamicVariables=1
Use quotes around the GetData parameters. The tags are enclosed by round parentheses. WeatherHub uses a "Replace" function on the second argument: if you want to fetch multiple values in one go, you can include multiple tags. You can include other characters, but keep them outside the tag parentheses.
Tag matrix
Red means the feed doesn't provide this data.
Info type | DarkSky | Accu | Bit | Open | Tag |
API key sign-up | Link | Link | Link | Link | |
Locate by IP | |||||
Forecast days | 5 | 5 | 5 | 7 | |
Usage limits for free accounts |
|||||
Requests | 1K/d | 50/d | 500/d | 1K/d | |
Tags to verify location |
|||||
City | (city) | ||||
Country | (country) | ||||
Latitude | (lat) | ||||
Longitude | (lon) | ||||
Current conditions |
|||||
Timestamp UTC time | (c_timeU) | ||||
Timestamp loc. time | (c_timeL) | ||||
Temp. (F) | (c_tempF) | ||||
Temp. (C) | (c_tempC) | ||||
Short description | (c_desc) | ||||
Icon (local) | (c_iconL) | ||||
Icon (server) | (c_iconS) | ||||
Wind (mph) | (c_windM) | ||||
Wind (km/h) | (c_windK) | ||||
Wind direction | (c_windD) | ||||
Wind gust (mph) | (c_gustM) | ||||
Wind gust (km/h) | (c_gustK) | ||||
Precip. (in/h) | (c_precI) | ||||
Precip. (mm/h) | (c_precM) | ||||
Precip. (in/d) | (c_precDI) | ||||
Precip. (mm/day) | (c_precDM) | ||||
Prec. chance (%) | (c_precC) | ||||
Precip type (word) | (c_precT) | Prec. Bool. (Y/N) (*) | (c_precB) | ||
Humidity (%) | (c_hum) | ||||
Dew point (F) | (c_dewF) | ||||
Dew point (C) | (c_dewC) | ||||
Visibility (miles) | (c_visM) | ||||
Visibility (km) | (c_visK) | ||||
Pressure (inHg) | (c_pressI) | ||||
Pressure (mB) | (c_pressM) | ||||
Cloud cover (%) | (c_cloud) | ||||
Moon phase (%) | (c_moonP) | ||||
Sunrise | (c_sunR) | ||||
Sunset | (c_sunS) | ||||
UV index | (c_uv) | ||||
Forecast days |
|||||
Timestamp UTC | (f0_timeU) | ||||
Timestamp (loc. time) |
(f0_timeL) | ||||
Date (local) | (f0_date) | ||||
Month day (local) | (f0_dayM) | ||||
Weekday (local) | (f0_dayW) | ||||
Month (local) | (f0_month) | ||||
Low temp. (F) | (f0_loF) | ||||
Low temp. (C) | (f0_loC) | ||||
High temp. (F) | (f0_hiF) | ||||
High temp. (C) | (f0_hiC) | ||||
Short description | (f0_desc) | ||||
Icon (local) | (f0_iconL) | ||||
Icon (server) | (f0_iconS) | ||||
Prec. chance (%) | (f0_precC) | ||||
Prec. Bool. (Y/N) (*) |
(f0_precB) |
(*) Precipitation Booleans, e.g. "(f0_precB)", return "Y" if the precipitation chance (in %) is higher than PrecipChanceThreshold set in your settings ("N" otherwise). This may help set up precipitation alerts in Rainmeter.
Sample skins (included)
To adapt the sample skins, replace the geographic coordinates and the API key with your values. For Dark Sky and WeatherBit you can just use coordinates. AccWeather requires a location (a numeric code), they don't accept coordinates.
A simple test skin
A small skin with 5-day forecast and TWC-style icons
The red square means there's a chance of precipitation
Icons
Different feeds use different icon naming conventions, they're not mutually interchangeable. The TWC naming convention uses numbers. It can act as a sort of a "standard". If you use the feed's native icon naming, it will match the weather condition exactly. Replacing them with TWC-style icons will be close, but not exactly the same, though you'll get a bigger selection of icon sets. The included TWC_icon_mapping.txt file maps the feed-specific names onto the TWC standard.
It's more efficient to keep icons locally. The WeatherHub download does not include any native icon sets, as it might not be OK with the feed providers. If you want them, download those icons manually. The (c_iconL) and (f#_iconL) tags represent the full path to the local icon file. The (c_iconS) and (f#_iconS) tags are the icon filenames on the feed's server (you shouldn't link to them directly).
Simple, well-designed icons: Shiny, Tick, Flat
Collections: Shutterstock
Feed info
Short handle: DarkSky
Important: Dark Sky has been bought by Apple. They no longer provide new API keys. Existing API keys will work until the end of 2021.
Location input: latitude+longitude; auto IP available, but not implemented.
API key: Sign up here
Icons: They don't have a custom icon set, use the TWC_icon_mapping.txt file and turn on "TWS compatible icons"
Limits: 1000 req/day; each connection equals one request
Short handle: Accu
Location input: AccuWeather requires their own numeric location code, they don't accept geo coordinates. Search here or here for your city, the AccuWeather location code is the number at the end of the URL.
API key: Sign up here
Icons: AccuWeather icons
Limits: AccuWeather has a very low request limit for the free tier: 50 req/day. Furthermore, each connection eats up 2 requests (current conditions + forecasts). In WeatherHub's settings, you'll need a connection interval of 60 min for AccuWeather (maybe less, if you don't use Rainmeter 24 hrs a day)
Short handle: Bit
Location input: latitude+longitude, city+state, US postal code, station ID. In WeatherHub, just enter the raw data (e.g the zip code itself), WeatherHub will recognize its type. You can find Weatherbit's city and station codes here.
API key: Sign up here
Icons: Weatherbit icons
Limits: 500 req/day. Each connection eats up 2 requests (current conditions + forecasts).
Short handle: Open
Location input: geo coordinates
API key: Sign up here
Icons: OpenWeather icons
Limits: 1000 req/day; each connection equals one request
Rainmeter.data
Your WeatherHub settings will be saved in the [WeatherHub] section in the .../AppData/Rainmeter/Rainmeter.data file. You don't need to edit it manually, but, for your reference, a non-functional sample is included in the skin folder. "Location", "Interval" etc, set the default values for all feeds. "Feed_Location", "Feed_Interval" etc, override the default value for a given feed.
; Coordinates are global (all feeds) Latitude=33.3872 Longitude=-104.5280 ; Sample default values for all feeds Location=88201 Interval=30 ; Set the API key for DarkSky DarkSky_APIKey=SampleKey_123456789 ; Connection interval for AccuWeather (overrides the default) Accu_Interval=60
Notes
- You can mix multiple feeds in one skin (each feed adds to connection time).
Download
Change log:
2.0.0.0 |
First release |
2.0.5.0 |
Fixed: Right after PC woke up from sleep, with no active Internet yet, |
2.0.7.0 |
Forecast day timestamp in UTC and local time |
2.20.5.7 |
Added OpenWeather and language support |
2.20.6.21 |
Debug option |
2.20.6.23 |
Fixed visibility, wind_gust, rain |
2.20.7.8 |
Added wake connect retry |
2.2020.9.20 |
Wake connect debug |
Download WeatherHub_plugin_demo_skins_2.2020.9.20.rmskin (4.3 MB)