diff --git a/source/_integrations/python_script.markdown b/source/_integrations/python_script.markdown
index 0ccc00e16a2..85943b59336 100644
--- a/source/_integrations/python_script.markdown
+++ b/source/_integrations/python_script.markdown
@@ -132,8 +132,8 @@ Services can also respond with data. Retrieving this data in your Python script
```python
# get_forecast.py
-service_data = {"type": "daily", "entity_id": "weather.YOUR_HOME"}
-current_forecast = hass.services.call("weather", "get_forecast", service_data, blocking=True, return_response=True)
+service_data = {"type": "daily", "entity_id": ["weather.YOUR_HOME", "weather.YOUR_SCHOOL"]}
+current_forecast = hass.services.call("weather", "get_forecasts", service_data, blocking=True, return_response=True)
```
## Documenting your Python scripts
diff --git a/source/_integrations/template.markdown b/source/_integrations/template.markdown
index 41cbeada74b..7915acbdaba 100644
--- a/source/_integrations/template.markdown
+++ b/source/_integrations/template.markdown
@@ -779,7 +779,7 @@ template:
- platform: time_pattern
hours: /1
action:
- - service: weather.get_forecast
+ - service: weather.get_forecasts
data:
type: hourly
target:
@@ -790,7 +790,7 @@ template:
unique_id: weather_forecast_hourly
state: "{{ now().isoformat() }}"
attributes:
- forecast: "{{ hourly.forecast }}"
+ forecast: "{{ hourly['weather.home'].forecast }}"
```
{% endraw %}
diff --git a/source/_integrations/weather.markdown b/source/_integrations/weather.markdown
index 5c9fff4f434..714c7fa52ca 100644
--- a/source/_integrations/weather.markdown
+++ b/source/_integrations/weather.markdown
@@ -49,7 +49,6 @@ The `weather` {% term entity %} can provide the conditions listed below as its s
Detailed weather conditions as well as the unit of measurements used for the conditions are indicated by state attributes. A weather {% term entity %} may not support all the state attributes.
-{% raw %}
```yaml
apparent_temperature: 12.0
cloud_coverage: 0
@@ -68,37 +67,29 @@ wind_gust_speed: 51.56
wind_speed: 35.17
wind_speed_unit: km/h
```
-{% endraw %}
-## Service `weather.get_forecast`
+## Service `weather.get_forecasts`
-Weather integrations which support weather forecasts expose the forecast using services. The services provided by weather entities are described below, and you can also read more about [Service Calls](/docs/scripts/service-calls/).
-
-
-
-Some integrations may not support the `weather.get_forecast` service, but instead expose weather forecasts as a state attribute named `forecast`. This behavior is deprecated and will be removed in a future release of Home Assistant Core.
-
-
-
-This service populates [Response Data](/docs/scripts/service-calls#use-templates-to-handle-response-data)
-with a weather forecast.
+This service populates [response data](/docs/scripts/service-calls#use-templates-to-handle-response-data)
+with a mapping of weather services and their associated forecasts.
| Service data attribute | Optional | Description | Example |
| ---------------------- | -------- | ----------- | --------|
-| `type` | no | The type of forecast, must be one of `daily`, `twice_daily` or `hourly`. | daily
+| `type` | no | The type of forecast, must be one of `daily`, `twice_daily`, or `hourly`. The default is `daily`. | daily
-{% raw %}
```yaml
-service: weather.get_forecast
+service: weather.get_forecasts
target:
- entity_id: weather.home
+ entity_id:
+ - weather.tomorrow_io_home_nowcast
+ - weather.toronto_forecast
data:
- type: daily
+ type: hourly
response_variable: weather_forecast
```
-{% endraw %}
-The response data field `forecast` is a list of forecasted conditions at a given point in time:
+The response data field is a mapping of called target entities, each containing the `forecast` field.
+`forecast` is a list of forecasted conditions at a given point in time:
| Response data | Description | Example |
| ---------------------- | ----------- | -------- |
@@ -112,7 +103,7 @@ The response data field `forecast` is a list of forecasted conditions at a given
| `precipitation_probability` | The probability of precipitation in %. | 0
| `precipitation` | The precipitation amount in the unit indicated by the `precipitation_unit` state attribute. | 0
| `pressure` | The air pressure in the unit indicated by the `pressure_unit` state attribute. | 1019
-| `temperature` | The temperature in the unit indicated by the `temperature_unit` state attribute. If templow is also provided, this is the higher temperature. | 14.2
+| `temperature` | The temperature in the unit indicated by the `temperature_unit` state attribute. If `templow` is also provided, this is the higher temperature. | 14.2
| `templow` | The lower temperature in the unit indicated by the `temperature_unit` state attribute. | 5.0
| `uv_index` | The UV index. | 3
| `wind_bearing` | The wind bearing in azimuth angle (degrees) or 1-3 letter cardinal direction. | 268
@@ -120,34 +111,85 @@ The response data field `forecast` is a list of forecasted conditions at a given
| `wind_speed` | The wind speed in the unit indicated by the `wind_speed_unit` state attribute. | 24.41
-Example forecast:
+## Examples
+
+{% details "Example template sensor using get_forecasts" %}
+
+Example template sensor that contains the hourly forecast
{% raw %}
+
```yaml
-forecast:
- - condition: cloudy
- precipitation_probability: 0
- datetime: '2023-02-17T14:00:00+00:00'
- wind_bearing: 268
- temperature: 14.2
- pressure: 1019
- wind_speed: 24.41
- precipitation: 0
- - condition: cloudy
- precipitation_probability: 0
- datetime: '2023-02-17T15:00:00+00:00'
- wind_bearing: 268
- temperature: 13.8
- pressure: 1019
- wind_speed: 22.61
- precipitation: 0
- - condition: cloudy
- precipitation_probability: 0
- datetime: '2023-02-17T16:00:00+00:00'
- wind_bearing: 265
- temperature: 13.2
- pressure: 1020
- wind_speed: 20.27
- precipitation: 0
+template:
+ - trigger:
+ - platform: time_pattern
+ hours: /1
+ action:
+ - service: weather.get_forecasts
+ data:
+ type: hourly
+ target:
+ entity_id: weather.home
+ response_variable: hourly
+ sensor:
+ - name: Temperature forecast next hour
+ unique_id: temperature_forecast_next_hour
+ state: "{{ hourly['weather.home'].forecast[0].temperature }}"
+ unit_of_measurement: °C
+
```
+
{% endraw %}
+
+{% enddetails %}
+
+
+{% details "Example service response" %}
+
+```yaml
+weather.tomorrow_io_home_nowcast:
+ forecast:
+ - datetime: "2023-12-07T13:00:00+00:00"
+ condition: cloudy
+ precipitation_probability: 0
+ wind_bearing: 241.19
+ temperature: 0.1
+ dew_point: -1.9
+ wind_speed: 16.88
+ precipitation: 0
+ humidity: 86
+ - datetime: "2023-12-07T14:00:00+00:00"
+ condition: cloudy
+ precipitation_probability: 0
+ wind_bearing: 232.41
+ temperature: 0.8
+ dew_point: -2.8
+ wind_speed: 17.82
+ precipitation: 0
+ humidity: 77
+ - datetime: "2023-12-07T15:00:00+00:00"
+ condition: cloudy
+ precipitation_probability: 0
+ wind_bearing: 236.09
+ temperature: 1.1
+ dew_point: -2.6
+ wind_speed: 17.89
+ precipitation: 0
+ humidity: 77
+weather.toronto_forecast:
+ forecast:
+ - datetime: "2023-12-07T14:00:00+00:00"
+ condition: snowy
+ precipitation_probability: 40
+ temperature: 0
+ - datetime: "2023-12-07T15:00:00+00:00"
+ condition: snowy
+ precipitation_probability: 40
+ temperature: 0
+ - datetime: "2023-12-07T16:00:00+00:00"
+ condition: snowy
+ precipitation_probability: 40
+ temperature: 0
+```
+
+{% enddetails %}
\ No newline at end of file