New weather forecast template

Just FYI, yes this would be great. The keyword is “Should”, that is all good in theory, but not in practice.

My weather integration does not give simple things like “chance of rain today” as an entity - It would be great if it did! Sure.

But I have to dig down into the Attributes (array of forecasts) to get that data, as do many others. So your statement of “Should be simple” doesn’t track to our real world experiences.

And to be honest, simply accessing the attributes was super easy - this is one of the few HA changes that makes things much much harder and more complicated than they were before. (I just had a single line in my TTS yaml that read out todays chance of rain, for example)

FYI I use Tomorrow.io and not Accuweather because…Accuweather is funnily enough not very accurate where I live - Tomorow.io gives much more sane and accurate weather reports - but there are essentially no entities with such data - its all in the Forecast attribute.

Appreciate your volunteer help to the community. I understand this is super easy for you. It’s just worth noting that many don’t have you level of experience and knowledge in this field. There are no doubt things in life that I find super easy, that you would struggle with, and I might struggle to comprehend why those things are a struggle for you, when they are so easy for me… It is worth remembering the opposite is also true.

I will state this upgrade has one of the few HA upgrades that makes things far more complex and time consuming, than it used to be.

That is a complement - it means most of the upgrades improve things :slight_smile:

Thankyou for your work and support.

1 Like

There were system-stability reasons behind this decision. Mainly the state machine that HA uses is already large and has to be sent to client(s) quite often. To get the state machine into a maintainable state, some things have had to be removed. Given the huge amount of entities that have to be stored in the state machine, the developers are looking for as many things as they can to remove to keep the system stable.

Thanks. That makes sense.

The reasons sound solid, and you described them well.

I think just I and many are wondering, if there couldn’t have also been an easier/smoother “upgrade” process.

I probably have better templating skills than the average HA user, and this was non-trivial to change for me.

1 Like

There might have been easier/better ways to do it and we might see those in future versions. I know that this was decided a long time ago (and had a deprecation notice associated with it for at least 6 months). So, I mean, there was time to get it done. But I get where you are coming from.

hi, I used this code before, now I can’t understand how to create a sensor that tells me tomorrow’s minimum temperature.
I created this by looking at your examples but I don’t see the sensor.
what am I doing wrong?
Thank you

old condition in automation:

  condition:
    - condition: template
      value_template: '{{ (state_attr(''weather.casa'',''forecast'').0.templow)|float <= 2|float}}'

new:

template:
- trigger:
    - platform: time_pattern
      hours: "/1"
    - platform: state
      entity_id: weather.casa
    - platform: homeassistant
      event: start
    - platform: event
      event_type: event_template_reloaded
  action:
    - service: weather.get_forecasts
      data:
        type: daily
      target:
        entity_id: weather.casa
  sensor:
  - name: "Temperatura minima domani"
    icon: "mdi:thermometer"
    state: "{{ daily['weather.casa'].forecast[0].templow|float }}"

Where did you place the sensor configuration?

hello, inside one of my .yaml files in the package folder.

/homeassistant/packages/meteo.yaml

I didn’t see it at first… you are missing the response_variable declaration.

template:
  - trigger:
      - platform: time_pattern
        hours: "/1"
      - platform: state
        entity_id: weather.casa
      - platform: homeassistant
        event: start
    action:
      - service: weather.get_forecasts
        data:
          type: daily
        target:
          entity_id: weather.casa
        response_variable: daily
    sensor:
      - name: "Temperatura minima domani"
        icon: "mdi:thermometer"
        state: "{{ daily['weather.casa'].forecast[0].templow|float }}"
1 Like

Thank you! so it works well :grinning:

They could’ve shipped it with a preinstalled set of templates such as: https://www.home-assistant.io/integrations/template/#trigger-based-handling-of-service-response-data

I just wasted a couple of hours also trying to figure out why many examples around don’t work. I realise though this is the problem with breaking changes, that the plethora of ‘helpful’ examples on the internet no longer work and you’re left wondering why as a beginner.

Got it working now though with template.yaml using OpenWeatherMap!

1 Like

I need some assistance getting todays and tonight’s weather forecast for NWS integration . I have set up a template sensor and it is populating the sensor with data. The issue I am having is that it seems to be pulling stale data. As you can see from the results, even though this was pulled today (4/29) the first forecast is from 4/27 instead.

Sensor template:

template:
  - trigger:
      - platform: time_pattern
        hours: /1
      - platform: homeassistant
        event: start
      - platform: event
        event_type: event_template_reloaded
    action:
      - service: weather.get_forecasts
        target:
          entity_id:
            - weather.galveston
        data:
          type: twice_daily
        response_variable: daily
    sensor:
      - name: Galveston Forecast
        unique_id: galveston_forecast
        state: "{{ states('weather.galveston') }}"
        attributes:
          forecast: "{{ daily['weather.galveston'].forecast }}"

Results

weather.galveston:
  forecast:
    - detailed_description: >-
        Partly sunny, with a high near 78. Southeast wind around 25 mph, with
        gusts as high as 40 mph.
      datetime: "2024-04-27T14:00:00-05:00"
      precipitation_probability: 0
      is_daytime: true
      condition: windy-variant
      wind_bearing: 135
      temperature: 78
      dew_point: 73
      wind_speed: 25
      humidity: 87
    - detailed_description: >-
        Mostly cloudy, with a low around 74. Southeast wind 25 to 30 mph, with
        gusts as high as 40 mph.
      datetime: "2024-04-27T18:00:00-05:00"
      precipitation_probability: 0
      is_daytime: false
      condition: windy-variant
      wind_bearing: 135
      temperature: 74
      dew_point: 73
      wind_speed: 27.5
      humidity: 90
    - detailed_description: >-
        A chance of showers and thunderstorms after 1pm. Mostly cloudy, with a
        high near 77. Southeast wind 15 to 25 mph, with gusts as high as 40 mph.
        Chance of precipitation is 30%. New rainfall amounts less than a tenth
        of an inch possible.
      datetime: "2024-04-28T06:00:00-05:00"
      precipitation_probability: 30
      is_daytime: true
      condition: lightning-rainy
      wind_bearing: 135
      temperature: 77
      dew_point: 74
      wind_speed: 20
      humidity: 91
    - detailed_description: >-
        A chance of showers and thunderstorms. Mostly cloudy, with a low around
        73. Southeast wind 15 to 20 mph, with gusts as high as 30 mph. Chance of
        precipitation is 40%.
      datetime: "2024-04-28T18:00:00-05:00"
      precipitation_probability: 40
      is_daytime: false
      condition: lightning-rainy
      wind_bearing: 135
      temperature: 73
      dew_point: 73
      wind_speed: 17.5
      humidity: 94
    - detailed_description: >-
        A chance of showers and thunderstorms. Partly sunny, with a high near
        78. South wind 10 to 15 mph, with gusts as high as 25 mph. Chance of
        precipitation is 50%.
      datetime: "2024-04-29T06:00:00-05:00"
      precipitation_probability: 50
      is_daytime: true
      condition: lightning-rainy
      wind_bearing: 180
      temperature: 78
      dew_point: 74
      wind_speed: 12.5
      humidity: 94
    - detailed_description: >-
        A chance of showers and thunderstorms. Mostly cloudy, with a low around
        74. Chance of precipitation is 50%.
      datetime: "2024-04-29T18:00:00-05:00"
      precipitation_probability: 50
      is_daytime: false
      condition: lightning-rainy
      wind_bearing: 135
      temperature: 74
      dew_point: 73
      wind_speed: 15
      humidity: 94
    - detailed_description: >-
        A chance of showers and thunderstorms. Partly sunny, with a high near
        79. Chance of precipitation is 40%.
      datetime: "2024-04-30T06:00:00-05:00"
      precipitation_probability: 40
      is_daytime: true
      condition: lightning-rainy
      wind_bearing: 135
      temperature: 79
      dew_point: 73
      wind_speed: 15
      humidity: 92
    - detailed_description: >-
        A chance of showers and thunderstorms before 7pm. Mostly cloudy, with a
        low around 75. Chance of precipitation is 40%.
      datetime: "2024-04-30T18:00:00-05:00"
      precipitation_probability: 40
      is_daytime: false
      condition: lightning-rainy
      wind_bearing: 135
      temperature: 75
      dew_point: 73
      wind_speed: 15
      humidity: 91
    - detailed_description: Partly sunny, with a high near 79.
      datetime: "2024-05-01T06:00:00-05:00"
      precipitation_probability: 0
      is_daytime: true
      condition: cloudy
      wind_bearing: 135
      temperature: 79
      dew_point: 73
      wind_speed: 15
      humidity: 91
    - detailed_description: Mostly cloudy, with a low around 75.
      datetime: "2024-05-01T18:00:00-05:00"
      precipitation_probability: 0
      is_daytime: false
      condition: cloudy
      wind_bearing: 135
      temperature: 75
      dew_point: 73
      wind_speed: 17.5
      humidity: 92
    - detailed_description: >-
        A slight chance of showers and thunderstorms after 1pm. Partly sunny,
        with a high near 79. Chance of precipitation is 20%.
      datetime: "2024-05-02T06:00:00-05:00"
      precipitation_probability: 20
      is_daytime: true
      condition: lightning-rainy
      wind_bearing: 135
      temperature: 79
      dew_point: 73
      wind_speed: 17.5
      humidity: 94
    - detailed_description: >-
        A slight chance of showers and thunderstorms. Mostly cloudy, with a low
        around 75. Chance of precipitation is 20%.
      datetime: "2024-05-02T18:00:00-05:00"
      precipitation_probability: 20
      is_daytime: false
      condition: lightning-rainy
      wind_bearing: 135
      temperature: 75
      dew_point: 73
      wind_speed: 15
      humidity: 92
    - detailed_description: >-
        A slight chance of showers and thunderstorms. Partly sunny, with a high
        near 79. Chance of precipitation is 20%.
      datetime: "2024-05-03T06:00:00-05:00"
      precipitation_probability: 20
      is_daytime: true
      condition: lightning-rainy
      wind_bearing: 135
      temperature: 79
      dew_point: 72
      wind_speed: 15
      humidity: 90
    - detailed_description: >-
        A slight chance of showers and thunderstorms before 7pm. Mostly cloudy,
        with a low around 72. Chance of precipitation is 20%.
      datetime: "2024-05-03T18:00:00-05:00"
      precipitation_probability: 20
      is_daytime: false
      condition: lightning-rainy
      wind_bearing: 90
      temperature: 72
      dew_point: 72
      wind_speed: 10
      humidity: 91

This is the template I use for my briefing which used to update for day and night, but now is stuck with data from the 27th.

It's {{ state_attr('weather.galveston', 'temperature') }}° outside. {{ state_attr('sensor.galveston_forecast', 'forecast')[0].detailed_description }}

Any assistance is greatly appreciated.

You need to get today’s two forecast objects then select one. One way to do that is as follows:

It's {{state_attr('weather.galveston','temperature')}}° outside. {% set list = state_attr('sensor.galveston_forecast','forecast')
| rejectattr('datetime', 'match', (now()|string)[0:11])
| sort(attribute='datetime')|map(attribute='detailed_description')|list %}
{{- list[0] if now().hour < 17 else list[1] }}
1 Like

Hi All,

I just updated to 2024.4 and I immediately got an error describing the deprecated forecast mentioned in the breaking changes. (overlooked it before updating).

At this point I can’t get my forecasts working again which is a bummer.

My old config:

# Weather Combination
weather:
  - platform: template
    name: "Weather Combination"
    condition_template: "{{ states('weather.openweathermap') }}"
    temperature_template: "{{ states('sensor.buiten_temperature') | float}}"
    humidity_template: "{{ states('sensor.buiten_humidity')| float }}"
    forecast_template: "{{ state_attr('weather.openweathermap', 'forecast') }}"
    pressure_template: "{{ states('sensor.openweathermap_pressure') | float }}"
    wind_speed_template: "{{ state_attr('weather.openweathermap', 'wind_speed') }}"
    wind_bearing_template: "{{ state_attr('weather.openweathermap', 'wind_bearing') }}"
    visibility_template: "{{ state_attr('weather.buienradar', 'visibility') }}"

What I’ve changed:

# Weather Combination
weather:
  - platform: template
    name: "Weather Combination"
    condition_template: "{{ states('weather.openweathermap') }}"
    temperature_template: "{{ states('sensor.buiten_temperature') | float}}"
    humidity_template: "{{ states('sensor.buiten_humidity')| float }}"
    forecast_daily_template: "{{ state_attr('weather.openweathermap', 'forecast') }}"
    pressure_template: "{{ states('sensor.openweathermap_pressure') | float }}"
    wind_speed_template: "{{ state_attr('weather.openweathermap', 'wind_speed') }}"
    wind_bearing_template: "{{ state_attr('weather.openweathermap', 'wind_bearing') }}"
    visibility_template: "{{ state_attr('weather.buienradar', 'visibility') }}"

This makes the configuration error disappear when restarting, however it still doesn’t show my forecasts in my custom: weather card.

I’ve checked this thread and I’m not sure making a triggered template will be the solution for me. Any advice would be appreciated!

update custom:weather card

Hi, Thanks for the reply. the weather card is up to date (1.5.0).

Make sure that 1.5.0 has the ability to read the forecast data. Last I checked, it was only in the beta.

Thank you for the nudge in the right direction. I had to make a couple of minor changes, but this now works. Here is the updated template

It's {{state_attr('weather.galveston','temperature')}}° outside. {% set list = state_attr('sensor.galveston_forecast','forecast')
| selectattr('datetime', 'match', (now()|string)[0:11]|trim)
| sort(attribute='datetime')|map(attribute='detailed_description')|list %}
{{- list[0] if now().hour < 17 else list[1] }}

Thanks for your assistance!

Well another fun stop on this continuing saga of ridiculousness.

No matter how I do it none of these templates pull the number in as a number. So I can’t have anything use it as a number. The float and is_number tests always fail.

I really hope the devs responsible for removing such a vital function with no similarly easy replacement read this large thread of frustrations. It should not be this hard to pull a daily temperature and test it against something. I’ve been able to do this for years with home assistant and now automations are broken. I can’t remember anything being this frustratingly difficult with home assistant before and I have been templating and using yaml since the early days.

4 Likes

You don’t need to use is_number for any of this…

I didn’t say I was. I said I was running it as a test against the sensor value.