Home Assistant custom component sensor for Weather Underground personal weather station users
👍 If you find this product useful, feel free to buy me a beer: https://paypal.me/cytecheng
The wundergroundpws
platform uses Weather Underground as a source for current weather information.
Free API keys are only issued to registered and active Weather Underground personal weather station users.
To use this sensor, you need to enter your personal weather station API key and Station ID in configuration.yaml.
To get a free API key:
-
You must have a personal weather station registered and uploading data to Weather Underground
a) Join weather Underground
b) Sign In
c) My Profile -> My Weather Stations
d) Add a New PWS
-
get API key at https://www.wunderground.com/member/api-keys
Please consider this when using the following information.
To Install, copy the custom_components directory into your .homeassistant directory and the www directory into your .homeassistant directory.
or
copy the contents of the custom_components into an existing custom_components directory in your .homeassistant directory and the contents of the www directory into an existing www directory in your .homeassistant directory.
Current conditions are generated from the wundergroundpws configured pws_id.
Forecast is generated from the HA configured latitude/longitude.
To add Wunderground to your installation, add the following to your configuration.yaml
file:
# Example configuration.yaml entry
sensor:
- platform: wundergroundpws
api_key: YOUR_API_KEY
pws_id: YOUR_STATION_ID
monitored_conditions:
- temp
- dewpt
- heatIndex
api_key:
description: The API key for Weather Underground. See above for details.
required: true
type: string
pws_id:
description: "You must enter a Personal Weather Station ID. The station id will be used to display current weather conditions."
required: true
type: string
lang:
description: Specify the language that the API returns. The current list of all Wunderground language codes is available at https://docs.google.com/document/d/13HTLgJDpsb39deFzk_YCQ5GoGoZCO_cRYzIxbwvgJLI/edit#). If not specified, it defaults to English (en-US).
required: false
type: string
default: en-US
latitude:
description: Latitude coordinate for weather forecast (required if **longitude** is specified).
required: false
type: string
default: Coordinates defined in your `configuration.yaml`
longitude:
description: Longitude coordinate for weather forecast (required if **latitude** is specified).
required: false
type: string
default: Coordinates defined in your `configuration.yaml`
monitored_conditions:
description: Conditions to display in the frontend. The following conditions can be monitored.
required: true
type: list
default: symbol
keys:
(generated from PWS)
stationID:
description: Your personal weather station (PWS) ID
solarRadiation:
description: Current levels of solar radiation
neighborhood:
description: WU PWS reference name
obsTimeLocal:
description: Text summary of local observation time
uv:
description: Current levels of UV radiation. See [here](https://www.wunderground.com/resources/health/uvindex.asp) for explanation.
winddir:
description: Wind degrees
humidity:
description: Relative humidity
dewpt:
description: Temperature below which water droplets begin to condense and dew can form
heatIndex:
description: Heat index (combined effects of the temperature and humidity of the air)
windChill:
description: Wind Chill (combined effects of the temperature and wind)
elev:
description: Elevation
precipTotal:
description: Today Total precipitation
precipRate:
description: Rain intensity
pressure:
description: Atmospheric air pressure
temp:
description: Current temperature
windGust:
description: Wind gusts speed
windSpeed:
description: Current wind speed
(generated from lat/lon forecast)
precip_1d:
description: "[<sup>[1d]</sup>](#1d): Forecasted precipitation intensity"
precip_chance_1d:
description: "[<sup>[1d]</sup>](#1d): Forecasted precipitation probability in %"
temp_high_1d:
description: "[<sup>[1d]</sup>](#1d): Forecasted high temperature"
temp_low_1d:
description: "[<sup>[1d]</sup>](#1d): Forecasted low temperature"
wind_1d:
description: "[<sup>[1d]</sup>](#1d): Forecasted wind speed"
weather_1d:
description: "[<sup>[12h]</sup>](#12h): A human-readable weather forecast of Day"
weather_1n:
description: "[<sup>[12h]</sup>](#12h): A human-readable weather forecast of Night"
```
All the conditions listed above will be updated every 5 minutes.
Conditions above marked with <a name="1d">[1d]</a> are daily forecasts. To get forecast for different day, replace the number
in `_1d_` part of the sensor name. Valid values are from `1` to `5`.
Conditions above marked with <a name="1n">[1n]</a> are nightly forecasts. To get forecast for different night, replace the number
in `_1n_` part of the sensor name. Valid values are from `1` to `5`.
```yaml
sensor:
- platform: wunderground
api_key: YOUR_API_KEY
pws_id: YOUR_STATION_ID
monitored_conditions:
- weather_1d
- weather_1n
- weather_2d
- weather_2n
- weather_3d
- weather_3n
- weather_4d
- weather_4n
group:
daily_forecast:
name: Daily Forecast
entities:
- sensor.pws_weather_1d
- sensor.pws_weather_1n
- sensor.pws_weather_2d
- sensor.pws_weather_2n
- sensor.pws_weather_3d
- sensor.pws_weather_3n
- sensor.pws_weather_4d
- sensor.pws_weather_4n
```
<p class='note warning'>
Note: While the platform is called “wundergroundpws” the sensors will show up in Home Assistant as “WUPWS” (eg: sensor.wupws_weather_1d).
</p>
Note that the Weather Underground sensor is added to the entity_registry, so second and subsequent Personal Weather Station ID (pws_id) will have their monitored conditions suffixed with an index number e.g.
```yaml
- sensor.wupws_weather_1d_metric_2
```
Additional details about the API are available [here](https://docs.google.com/document/d/1eKCnKXI9xnoMGRRzOL1xPCBihNV2rOet08qpE_gArAY/edit).