--- layout: page title: "Weather Underground (WUnderground)" description: "Instructions on how to integrate Weather Underground (WUnderground) Weather within Home Assistant." date: 2016-08-18 sidebar: true comments: false sharing: true footer: true logo: wunderground.png ha_category: Weather ha_release: 0.27 ha_iot_class: "Cloud Polling" --- The `wunderground` platform uses [Weather Underground](http://www.wunderground.com) as a source for current weather information.

Obtain a WUnderground API key [here](https://www.wunderground.com/weather/api). They no longer offer free API keys, and all keys must be paid for. At this time existing free keys will continue to work, but will be disabled Dec 31, 2018. As of Sept 6, 2018 Weather Underground states they are declaring the [End of Service for the Weather Underground API](https://apicommunity.wunderground.com/weatherapi/topics/end-of-service-for-the-weather-underground-api). They say they will develop new plans for non-commercial users. No timeline for this has been announced. Please consider this when using the following information.

To add Wunderground to your installation, add the following to your `configuration.yaml` file: ```yaml # Example configuration.yaml entry sensor: - platform: wunderground api_key: your_api_key monitored_conditions: - alerts - dewpoint_c ``` {% configuration %} api_key: description: The API key for Weather Underground. See above for details. required: true type: string pws_id: description: "You can enter a Personal Weather Station ID. The current list of Wunderground PWS stations is available [here](https://www.wunderground.com/weatherstation/ListStations.asp). If you do not enter a PWS ID, the current location information (latitude and longitude) from your `configuration.yaml` will be used to display weather conditions." required: false type: string lang: description: Specify the language that the API returns. The current list of all Wunderground language codes is available [here](https://www.wunderground.com/weather/api/d/docs?d=language-support). If not specified, it defaults to English (EN). required: false type: string default: EN latitude: description: Latitude coordinate to monitor weather of (required if **longitude** is specified). required: false type: string default: Coordinates defined in your `configuration.yaml` longitude: description: Longitude coordinate to monitor weather of (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: alerts: description: Current severe weather advisories dewpoint_c: description: Temperature in Celsius below which water droplets begin to condense and dew can form dewpoint_f: description: Temperature in Fahrenheit below which water droplets begin to condense and dew can form dewpoint_string: description: Text summary of dew point feelslike_c: description: Feels like (or apparent) temperature in Celsius feelslike_f: description: Feels like (or apparent) temperature in Fahrenheit feelslike_string: description: Text summary of how the current temperature feels like heat_index_c: description: Heat index (combined effects of the temperature and humidity of the air) in Celsius heat_index_f: description: Heat index (combined effects of the temperature and humidity of the air) in Fahrenheit heat_index_string: description: Text summary of current heat index elevation: description: Elevation in feet location: description: City and State observation_time: description: Text summary of observation time precip_today_in: description: Total precipitation in inches precip_today_metric: description: Total precipitation in metric units precip_today_string: description: Text summary of precipitation today precip_1d_mm: description: "[[1d]](#1d): Forecasted precipitation intensity in millimeters" precip_1d_in: description: "[[1d]](#1d): Forecasted precipitation intensity in inches" precip_1d: description: "[[1d]](#1d): Forecasted precipitation probability in %" pressure_in: description: Atmospheric air pressure in inches pressure_mb: description: Atmospheric air pressure in millibars pressure_trend: description: "Atmospheric air pressure trend signal `(+/-)`" relative_humidity: description: Relative humidity station_id: description: Your personal weather station (PWS) ID solarradiation: description: Current levels of solar radiation temperature_string: description: Temperature text combining Fahrenheit and Celsius temp_c: description: Current temperature in Celsius temp_f: description: Current temperature in Fahrenheit temp_high_record_c: description: Maximum temperature measured in Celsius temp_high_record_f: description: Maximum temperature measured in Fahrenheit temp_low_record_c: description: Minimal temperature measured in Celsius temp_low_record_f: description: Minimal temperature measured in Fahrenheit temp_high_avg_c: description: Average high for today in Celsius temp_high_avg_f: description: Average high for today in Fahrenheit temp_low_avg_c: description: Average low for today in Celsius temp_low_avg_f: description: Average low for today in Fahrenheit temp_high_1d_c: description: "[[1d]](#1d): Forecasted high temperature in Celsius" temp_high_1d_f: description: "[[1d]](#1d): Forecasted high temperature in Fahrenheit" temp_low_1d_c: description: "[[1d]](#1d): Forecasted low temperature in Celsius" temp_low_1d_f: description: "[[1d]](#1d): Forecasted low temperature in Fahrenheit" UV: description: Current levels of UV radiation. See [here](https://www.wunderground.com/resources/health/uvindex.asp) for explanation. visibility_km: description: Average visibility in km visibility_mi: description: Average visibility in miles weather: description: A human-readable text summary with picture from Wunderground. weather_1d: description: "[[12h]](#12h): A human-readable weather forecast using imperial units." weather_1d_metric: description: "[[12h]](#12h): A human-readable weather forecast using metric units." weather_1h: description: "[[1h]](#1h): Weather conditions in 1 hour. (e.g., \"Thunderstorm\" etc.)" wind_degrees: description: Wind degrees wind_dir: description: Wind direction wind_gust_kph: description: Wind gusts speed in kph wind_gust_mph: description: Wind gusts speed in mph wind_gust_1d_kph: description: "[[1d]](#1d): Max. forecasted Wind in kph" wind_gust_1d_mph: description: "[[1d]](#1d): Max. forecasted Wind in mph" wind_kph: description: Current wind speed in kph wind_mph: description: Current wind speed in mph wind_1d_kph: description: "[[1d]](#1d): Forecasted wind speed in kph" wind_1d_mph: description: "[[1d]](#1d): Forecasted wind speed in mph" wind_string: description: Text summary of current wind conditions {% endconfiguration %} All the conditions listed above will be updated every 5 minutes. ### {% linkable_title Forecasts %} _12 hour forecasts_ Monitored conditions marked above with [12h] are 12 hour forecasts. To get a forecast for different period/daytime replace the `_1d_` part of the sensor name. e.g., `weather_2n` will give you forecast for tomorrow night. Valid values for day are `1` to `4` and valid values for daytime are `d` or `n`. _Daily forecasts_ Conditions above marked with [1d] 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 `4`. _Hourly forecasts_ Conditions marked with [1h] are hourly forecasts. To get forecast for different hour, replace the number in the `_1h_` part of the sensor name with `1` to `36`. e.g., `weather_24h` will give you weather in 24 hours. ### {% linkable_title Additional examples %} #### {% linkable_title Daily forecast %} ```yaml sensor: - platform: wunderground api_key: your_api_key monitored_conditions: - weather_1d_metric - weather_1n_metric - weather_2d_metric - weather_2n_metric - weather_3d_metric - weather_3n_metric - weather_4d_metric - weather_4n_metric group: daily_forecast: name: Daily Forecast entities: - sensor.pws_weather_1d_metric - sensor.pws_weather_1n_metric - sensor.pws_weather_2d_metric - sensor.pws_weather_2n_metric - sensor.pws_weather_3d_metric - sensor.pws_weather_3n_metric - sensor.pws_weather_4d_metric - sensor.pws_weather_4n_metric ``` ![Daily Forecast](/images/screenshots/wunderground_daily_forecast.png) #### {% linkable_title Weather overview %} ```yaml sensor: - platform: wunderground api_key: your_api_key monitored_conditions: - temp_high_record_c - temp_high_1d_c - temp_c - temp_low_1d_c - temp_low_record_c - precip_1d - precip_1d_mm - wind_kph - wind_1d_kph - alerts group: weather_overview: name: Weather overview entities: - sensor.pws_weather_1d_metric - sensor.pws_temp_high_record_c - sensor.pws_temp_high_1d_c - sensor.pws_temp_c - sensor.pws_temp_low_1d_c - sensor.pws_temp_low_record_c - sensor.pws_precip_1d - sensor.pws_precip_1d_mm - sensor.pws_wind_kph - sensor.pws_wind_1d_kph - sensor.pws_alerts ``` ![Weather overview](/images/screenshots/wunderground_weather_overview.png)

Note: While the platform is called “wunderground” the sensors will show up in Home Assistant as “PWS” (eg: sensor.pws_weather).

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.pws_weather_1d_metric_2 ``` Additional details about the API are available [here](https://www.wunderground.com/weather/api/d/docs).