My weather forecast template doesnt work anymore

glitch with website my post dis appearted… but i was saying the code i had and edited twice… has an else so if non of them words show then the icon will be number 12

and is there a way its always annoyed me… the weather updates i think like every 10 min but with my poor internet it always goes unaviable… anything to fix that?

so i did a test… i changed things around the names…cuz i needed them to match the names orginally i had for sensor like sensor.today_max … so what i did was i deleted the 4 sensors in the Devices section…

i renamed you see below… and i rebooted fully… when i check the states… it doesnt actually create the sensors…

  - sensor:
      - name: today_min
        friendly_name: Today's mimimal temperature
        unique_id: today_min
        states: "{{ states('sensor.peterborough_low_temperature' ) }}"
        availability: "{{ has_value('sensor.peterborough_low_temperature') }}"

      - name: today_max
        friendly_name: Today's maximal temperature
        unique_id: today_max
        state: "{{ states('sensor.peterborough_high_temperature' ) }}"
        availability: "{{ has_value('sensor.peterborough_high_temperature') }}"

      - name: today_rain
        friendly_name: Today's rain forecast
        unique_id: today_rain
        state: "{{ states('sensor.peterborough_chance_of_precipitation') }}"
        availability: "{{ has_value('sensor.peterborough_chance_of_precipitation') }}"

      - name: today_icon
        friendly_name: Today weather forecast
        unique_id: today_icon
        state: >-
          {% set condition = states("sensor.peterborough_current_condition") %}
          {% set mapper = {'clear-night': 3,
          'cloudy': 5, 'fog': 16, 'hail': 6,
          'lightning': 13, 'lightning-rainy': 17, 'partlycloudy': 8,
          'pouring': 18, 'rainy': 9, 'snowy': 11,
          'snowy-rainy': 7, 'windy': 14, 'windy-variant': 14 } %}
          {{ mapper[condition] if condition in mapper.keys() else 12 }}
        availability: "{{ has_value('weather.peterborough_forecast') }}"

so maybe its not right to create the sensor?

friendly_name is not a valid configuration variable in the current format.

If you want the name and entity ID to be different you can change them in the UI.

ah ok… i took out the friendly name… and reboot HA but it didnt create the sensors still all i did above just ## pound them out… and restarted… so still wont make those sensors
must be something just 1 small thing

You need to just delete everything… I think you’ve got stuff that is not properly commented out and it’s causing the file to not be loaded properly or you have unique IDs that aren’t unique…

I added the Environment Canada integration to my instance, pasted the sensor config from my post above, and this is the result:

This is the exact configuration I used for the pictured results
template:
  - trigger:
      - platform: time_pattern
        hours: /1
      - platform: homeassistant
        event: start
    action:
      - service: weather.get_forecasts
        data:
          type: hourly
        target:
          entity_id: weather.peterborough_forecast
        response_variable: hourly
      - variables:
          ptb_forecast: "{{ hourly['weather.peterborough_forecast'].forecast }}"
    sensor:
      - name: Temperature forecast next hour
        unique_id: temperature_forecast_next_hour
        state: "{{ ptb_forecast[0].temperature }}"
        unit_of_measurement: °C      
        attributes:
          forecast_0: "{{ ptb_forecast[0] }}"

  - sensor:
      - name: Today Min
        unique_id: todays_minimal_temperature_0001
        state: "{{ states('sensor.peterborough_low_temperature' ) }}"
        availability: "{{ has_value('sensor.peterborough_low_temperature') }}"
        
      - name: Today Max
        unique_id: todays_maximal_temperature_0001
        state: "{{ states('sensor.peterborough_high_temperature' ) }}"
        availability: "{{ has_value('sensor.peterborough_high_temperature') }}"

      - name: Today Rain
        unique_id: todays_rain_forecast_0001
        state: "{{ states('sensor.peterborough_chance_of_precipitation') }}"
        availability: "{{ has_value('sensor.peterborough_chance_of_precipitation') }}"   
  
      - name: Today Icon
        unique_id: today_condition_icon_0001
        state: >-
          {% set condition = states("weather.peterborough_forecast") %}
          {% set mapper = {'clear-night': 3,
          'cloudy': 5, 'fog': 16, 'hail': 6,
          'lightning': 13, 'lightning-rainy': 17, 'partlycloudy': 8,
          'pouring': 18, 'rainy': 9, 'snowy': 11,
          'snowy-rainy': 7, 'windy': 14, 'windy-variant': 14 } %}
          {{ mapper[condition] if condition in mapper.keys() else 12 }}
        availability: "{{ has_value('weather.peterborough_forecast') }}"

FWIW, in your post in the other thread you are using value_template which is not a valid configuration variable in the current format.

its finally working yaaaaa… what i ended up doing… was i removed the weather.yaml and rebooted HA and then i checked states… and i seen the sensors were still there and the temp ones from i was making… so i i went to settings devices and entities… and searched for them. and deleted them… and did another reboot… check for sensors just to see if anything… conflicting… and then i put the weather.yaml back… and rebooted… and this time it worked… i guessing something was stuck and wouldnt fix itself… so seems to be working…
what does FWIW mean?
and ya i put back state: as value:template i trying something… i did find if i put it under the weather trigger automation under the sensor… it wouldnt work for me… it but id have to keep it under the - sensor:

another question… i tried

        ### Today's rain forecast ###
      - name: today_rain
        state: "{{ states('sensor.peterborough_chance_of_precipitation') | Default(0)}}"
        availability: "{{ has_value('sensor.peterborough_chance_of_precipitation')}}"

but since thats wrong what is the right code when its unavalable… the value should be 0

For what it’s worth

If you want it to report 0 even if the source sensor is unavailable or unknown then you can remove the availability. Also, Default() is not a valid filter function. Case matters; the filter is default().

        ### Today's rain forecast ###
      - name: today_rain
        state: "{{ states('sensor.peterborough_chance_of_precipitation') | int(0) }}"

If you want to be able to edit the entities’ names or IDs in the UI you will need to give them unique IDs.

ok cool ill try those and learn something new everyday FWIW (:

so i removed the default… and i removed the avaliablity but it still made the sensor unknown… or do i need that default in there?

Sorry about that… default() is for undefined values, but when the source sensor returns “unknown” or “unavailable” those values are considered defined. You will need to use a different method. Since this is for a numerical value I would suggest int(0) or float(0)

### Today's rain forecast ###
      - name: today_rain
        state: "{{ states('sensor.peterborough_chance_of_precipitation') | int(0) }}"

ok that works. thanks learn something new everyday… glad you know all this code… you must deal with it every day…

i know i still wanna do i asked a year or 2 ago but i still wanna do it … i wanna make a sensor with multiple attributes. like the weather sensor… but no one ever got back to me… i wanted it it for a mqtt and also for a couple things like a message to a display screen… so message had title font color message but no one ever knew… do you know how that works… not something i wanna work on today… but if you know could point me in the right direction for that

I don’t use MQTT very much, but it’s going to depend on how the MQTT topic and payload are set up and/or where the different data points are coming from. If the values for the sensor’s state and all the attributes all come from MQTT, then use an MQTT sensor otherwise you may need to create multiple sensors.

The devil is in the details.

I don’t understand what you are asking about.

sooo what i asked couple years ago is

weather forecast… has attributes
condition
temperature
wind
etc

i wanted to make a sensor called like
display_message:
with attributes
title
font
color
message

this way instead of having 4 sensors i could have 1 sensor with 4 attributes… but when i asked no one ever knew how to do it… so no one could help me

so i was going to MQTT a message, and then id also mqtt message stating the Title or Font and it go in that 1 sensor just like the Weather sensor
so the 4 fields would go into 1 sensor…

right now how i do it is i have multiple Sensors… and in Esphome i then send a certain Title, font color, and message to Nexition screen… but wanted it all from 1 sensor so i could change it…from a sensor… right now i have to edit Esphome and change it in the code.

so id like

 
sensor.message_display
       -attribute 1: title
       -attribute 2: message
       -attribute 3: font title
       -attribute 4: font message
       -attribute 5: title color
       -attribute 6: message color

and then id like to do how you read the fields like weather to seperate them

as i wanna change it in my esphome code to make it universal instead of this

              lambda: |-
                id(nextion1).goto_page("2");
                id(nextion1).set_component_text("title","Warning");
                id(nextion1).set_component_text("wmessage",id(warning_message).state.c_str());

and

              - lambda: |-
                  id(nextion1).goto_page("2");                           
                  id(nextion1).send_command_printf("title.pco=2016"); 
                  id(nextion1).set_component_text("title","Incoming..."); 
                  id(nextion1).set_component_text("wmessage",id(caller_id_displayid).state.c_str()); 

i have other ones but those just couple examples

but at the time no one knew how to do the weather forecast… so i shelved things

its something id still like to learn to do if possible but if you dont know thats ok too… cuz no one at the time knew… least i couldnt find help… as i had some other ideas too i wanted to use 1 sensor with multiple values but i forgotten for what now lol

@Didgeridrew so i found out
that

        friendly_name: Today weather forecast
        unique_id: today_icon
        state: >-
          {% set condition = states("sensor.peterborough_current_condition") %}
          {% set mapper = {'clear-night': 3,
          'cloudy': 5, 'fog': 16, 'hail': 6,
          'lightning': 13, 'lightning-rainy': 17, 'partlycloudy': 8,
          'pouring': 18, 'rainy': 9, 'rainy': 10,'snowy': 11,
          'snowy-rainy': 7, 'windy': 14, 'windy-variant': 14 } %}
          {{ mapper[condition] if condition in mapper.keys() else 12 }}
        availability: "{{ has_value('weather.peterborough_forecast') }}"

doesnt work… when i thought it worked it was sunny so it was icon code 12…
but right now its raining so code weather. peterborough forecast icon number is 10 but today icon number is 12

so it should be 10 but its saving as 12… not sure i tried saving it inside the trigger for the hourly update and it erased the today_icon

so not sure… why its reporting 12 even though it should be 10?

Where is the 10 in your mapper? That code can never return 10. (edit: at least, the originally-posted version couldn’t!)

Are you copy-pasting code without even trying to understand it? Just read through it and try to follow the logic of what it’s doing.

i did a quick restart probably why it shows unavailable and unknown

See Post #45 where I told you that was an issue. The keys in the map need to exactly match what the sensor state returns.

I would just use the state of the weather entity in that sensor, as shown in the config I shared in Post #52.