Read value_json.temperature_F from mqtt msg

hi,
i configured a mqtt sensor that display outside temperature (coming from my neighbour weather station)

sensor:

  • platform: mqtt
    device_class: temperature
    unit_of_measurement: ‘°F’
    name: “thermoLaCrosse”
    state_topic: “rtl_433/LaCrosse-WS2310/226”
    value_template: “{{ value_json.temperature_F }}”

It is working when i receive the first message with “temperature_F”. The temperature is display

{“time”:“2022-06-29 20:06:30”,“model”:“LaCrosse-WS2310”,“id”:226,“temperature_F”:90.5}
{“time”:“2022-06-29 20:06:30”,“model”:“LaCrosse-WS2310”,“id”:226,“humidity”:42}
{“time”:“2022-06-29 20:06:30”,“model”:“LaCrosse-WS2310”,“id”:226,“wind_avg_m_s”:0,“wind_dir_deg”:112.5}

But when i receive the next msg “humidity” or “wind” message, temperature field becomes 0

Do you know why?
Thanks

Because the temperature field is not defined?

you need to create a template to filter that out. the easiest way (for me) is to check if the field is defined.

if yes then use the new data. If not use the existing data.

value_template: >
  {% if value_json.temperature_F is defined %}
    {{ value_json.temperature_F }}”
  {% else %}
    {{states('sensor.thermolacrosse') |float}}
  {% endif %}

thanks i will try right now

Is the 2 quotes at the end are required?

{{ value_json.temperature_F }}”

i did that and it is working well

  • platform: mqtt
    device_class: temperature
    unit_of_measurement: ‘°F’
    name: “thermolacrosse”
    state_topic: “rtl_433/LaCrosse-WS2310/226”
    force_update: true
    value_template: >
    {% if value_json.temperature_F is defined %}
    {{ value_json.temperature_F }}
    {% else %}
    {{ sensor.thermolacrosse }}
    {% endif %}

thanks a lot !!!

no, sorry, typo.

but I see you already figured that out tho. :laughing: