MQTT Action, cannot apply Condition Template

Hi,
I am new on HA, just started to paly with it and I would like to move from OpenHab to HA.
I am running HA 2023.7.2
I have lots of ZigBee Devices connected via ZigBee2MQTT and Mosquitto as Brocker.

I would like to create an Action using MQTT Trigger, listening to a topic of an IKEA Button.
Topic is: zigbee2mqtt/Ikea_Button_ScrivaniaMansarda and it return:

{
  "action": "on",
  "battery": 100,
  "brightness": 255,
  "last_seen": 1689271758959,
  "linkquality": 54,
  "update": {
    "installed_version": 65572,
    "latest_version": 581,
    "state": "idle"
  },
  "update_available": false
}

I create this action:

alias: Button Scrivania Mansarda MQTT
description: ''
trigger:
  - platform: mqtt
    topic: zigbee2mqtt/Ikea_Button_ScrivaniaMansarda
condition:
  - condition: template
    value_template: '{{ trigger.value_json.action=="on" }}'
    enabled: true
action:
  - service: notify.pushover
    data:
      message: Test Action MQTT
mode: single

And I got this error:

2023-07-14 10:29:39.863 DEBUG (Thread-2 (_thread_main)) [paho.mqtt.client] Received PUBLISH (d0, q0, r0, m0), 'zigbee2mqtt/Ikea_Button_ScrivaniaMansarda', ...  (19 bytes)
2023-07-14 10:29:39.864 DEBUG (MainThread) [homeassistant.components.mqtt.client] Received message on zigbee2mqtt/Ikea_Button_ScrivaniaMansarda (qos=0): b'{ "action" : "on" }'
2023-07-14 10:29:39.864 DEBUG (MainThread) [homeassistant.components.mqtt.models] Rendering incoming payload '{ "action" : "on" }' with variables {'entity_id': 'sensor.ikea_button_scrivaniamansarda_battery', 'name': 'Ikea_Button_ScrivaniaMansarda_battery', 'this': <template TemplateStateFromEntityId(sensor.ikea_button_scrivaniamansarda_battery)>} with default value 'default' and Template<template=({{ value_json.battery }}) renders=1>
2023-07-14 10:29:39.864 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'battery' when rendering '{{ value_json.battery }}'
2023-07-14 10:29:39.867 DEBUG (MainThread) [homeassistant.components.mqtt.sensor] Ignore empty state from 'zigbee2mqtt/Ikea_Button_ScrivaniaMansarda'
2023-07-14 10:29:39.867 DEBUG (MainThread) [homeassistant.components.mqtt.models] Rendering incoming payload '{ "action" : "on" }' with variables {'entity_id': 'sensor.ikea_button_scrivaniamansarda_action', 'name': 'Ikea_Button_ScrivaniaMansarda_action', 'this': <template TemplateStateFromEntityId(sensor.ikea_button_scrivaniamansarda_action)>} with default value 'default' and Template<template=({{ value_json.action }}) renders=1>
2023-07-14 10:29:39.867 DEBUG (MainThread) [homeassistant.components.mqtt.models] Rendering incoming payload '{ "action" : "on" }' with variables {'entity_id': 'update.ikea_button_scrivaniamansarda', 'name': 'Ikea_Button_ScrivaniaMansarda', 'this': <template TemplateStateFromEntityId(update.ikea_button_scrivaniamansarda)>} and Template<template=({{ value_json['update']['installed_version'] }}) renders=1>
2023-07-14 10:29:39.867 ERROR (MainThread) [homeassistant.helpers.template] Error parsing value: access to attribute 'update' of 'dict' object is unsafe. (value: { "action" : "on" }, template: {{ value_json['update']['installed_version'] }})
2023-07-14 10:29:39.870 DEBUG (MainThread) [homeassistant.components.mqtt.update] JSON payload detected after processing payload '{'action': 'on'}' on topic zigbee2mqtt/Ikea_Button_ScrivaniaMansarda
2023-07-14 10:29:39.870 DEBUG (MainThread) [homeassistant.components.mqtt.models] Rendering incoming payload '{ "action" : "on" }' with variables {'entity_id': 'update.ikea_button_scrivaniamansarda', 'name': 'Ikea_Button_ScrivaniaMansarda', 'this': <template TemplateStateFromEntityId(update.ikea_button_scrivaniamansarda)>} and Template<template=({{ value_json['update']['latest_version'] }}) renders=1>
2023-07-14 10:29:39.870 ERROR (MainThread) [homeassistant.helpers.template] Error parsing value: access to attribute 'update' of 'dict' object is unsafe. (value: { "action" : "on" }, template: {{ value_json['update']['latest_version'] }})
2023-07-14 10:29:39.871 DEBUG (MainThread) [homeassistant.components.automation.button_scrivania_mansarda_mqtt] Automation trigger 'None' triggered by mqtt topic zigbee2mqtt/Ikea_Button_ScrivaniaMansarda
2023-07-14 10:29:39.872 ERROR (MainThread) [homeassistant.helpers.template] Template variable error: 'dict object' has no attribute 'value_json' when rendering '{{ trigger.value_json.action=="on" }}'
2023-07-14 10:29:39.873 WARNING (MainThread) [homeassistant.components.automation] Error evaluating condition in 'Button Scrivania Mansarda MQTT':
In 'condition':
  In 'template' condition: UndefinedError: 'dict object' has no attribute 'value_json'
2023-07-14 10:29:39.873 DEBUG (MainThread) [homeassistant.components.automation.button_scrivania_mansarda_mqtt] Conditions not met, aborting automation. Condition summary: {'trigger/0': deque([{'path': 'trigger/0', 'timestamp': datetime.datetime(2023, 7, 14, 8, 29, 39, 872113, tzinfo=datetime.timezone.utc), 'changed_variables': {'this': {'entity_id': 'automation.button_scrivania_mansarda_mqtt', 'state': 'on', 'attributes': {'id': '1689090808919', 

I tried varius configuration, but I cannot apply codition and Action never start.
What I missing from this?
Thanks

trigger.value_json is not part of the available trigger data for MQTT triggers, so it’s not a valid attribute of the trigger variable.

Replace trigger.value_json with trigger.payload_json

1 Like

Thanks, it work.

Marco