Automation: IF in action --> payload

Hi Guys

I have an Automation to update an Open Hasp display.
So far its working but I am not able to use an IF in the payload part.

alias: Open Hasp - Abfahrten
description: ""
trigger:
  - platform: time_pattern
    minutes: "*"
action:
  - repeat:
      count: 6 
      sequence:
        - service: mqtt.publish
          data_template:
            topic: "hasp/openhasp01/command/p1b{{ repeat.index + 3 }}.text"
            payload: >
              {% set departure = state_attr('sensor.pasing','departures')[repeat.index - 1] %}
              {{ departure['label'] }} 
              {{ departure['destination'] }} 
              {{ departure['planned_departure'] }} - 
              {% if departure['delay'] | int > 0 %}
                 {{ departure['delay'] }}  -
              {% endif %}
              {{ departure['expected_departure'] }}
mode: single

{{ departure['delay'] }} is not shown

Any ideas ?

Copy-paste the following template into the Template Editor and let me know what it reports. Confirm delay exists and has a numeric value. If it has a non-numeric value, the int filter you used in your template will fail because it lacks a default value.

{{ state_attr('sensor.pasing', 'departures') }}

If you get an error message, confirm the spelling of the sensor’s entity_id and attribute.

Here the result from the template editor

[Departure(transport_type='SBAHN', label='S4', destination='Grafing-Bahnhof', track='7', planned_departure='16:27', expected_departure='16:30', cancelled=False, delay=3), Departure(transport_type='SBAHN', label='S3', destination='Mammendorf', track='8', planned_departure='16:27', expected_departure='16:33', cancelled=False, delay=6), Departure(transport_type='SBAHN', label='S4', destination='Geltendorf', track='8', planned_departure='16:31', expected_departure='16:35', cancelled=False, delay=4), Departure(transport_type='SBAHN', label='S3', destination='Maisach', track='8', planned_departure='16:37', expected_departure='16:41', cancelled=False, delay=4), Departure(transport_type='SBAHN', label='S3', destination='Mammendorf', track='8', planned_departure='16:47', expected_departure='16:50', cancelled=False, delay=3), Departure(transport_type='SBAHN', label='S20', destination='Geltendorf', track='4', planned_departure='16:50', expected_departure='16:51', cancelled=False, delay=1), Departure(transport_type='SBAHN', label='S4', destination='Geltendorf', track='8', planned_departure='16:51', expected_departure='16:58', cancelled=False, delay=7), Departure(transport_type='SBAHN', label='S3', destination='Maisach', track='8', planned_departure='16:57', expected_departure='17:00', cancelled=False, delay=3), Departure(transport_type='SBAHN', label='S4', destination='Grafing-Bahnhof', track='5', planned_departure='17:07', expected_departure='17:09', cancelled=False, delay=2), Departure(transport_type='SBAHN', label='S3', destination='Mammendorf', track='8', planned_departure='17:07', expected_departure='17:10', cancelled=False, delay=3), Departure(transport_type='SBAHN', label='S4', destination='Geltendorf', track='8', planned_departure='17:11', expected_departure='17:14', cancelled=False, delay=3), Departure(transport_type='SBAHN', label='S3', destination='Maisach', track='8', planned_departure='17:17', expected_departure='17:19', cancelled=False, delay=2), Departure(transport_type='SBAHN', label='S4', destination='Grafing-Bahnhof', track='5', planned_departure='17:27', expected_departure='17:29', cancelled=False, delay=2), Departure(transport_type='SBAHN', label='S3', destination='Mammendorf', track='8', planned_departure='17:27', expected_departure='17:30', cancelled=False, delay=3), Departure(transport_type='SBAHN', label='S4', destination='Geltendorf', track='8', planned_departure='17:31', expected_departure='17:34', cancelled=False, delay=3), Departure(transport_type='SBAHN', label='S3', destination='Maisach', track='8', planned_departure='17:37', expected_departure='17:37', cancelled=False, delay=0), Departure(transport_type='SBAHN', label='S4', destination='Grafing-Bahnhof', track='5', planned_departure='17:47', expected_departure='17:47', cancelled=False, delay=0), Departure(transport_type='SBAHN', label='S3', destination='Mammendorf', track='8', planned_departure='17:47', expected_departure='17:50', cancelled=False, delay=3), Departure(transport_type='SBAHN', label='S20', destination='Geltendorf', track='4', planned_departure='17:49', expected_departure='17:49', cancelled=False, delay=0), Departure(transport_type='SBAHN', label='S4', destination='Geltendorf', track='8', planned_departure='17:51', expected_departure='17:51', cancelled=False, delay=0)]

here the result

Departure(transport_type='SBAHN', label='S4', destination='Grafing-Bahnhof', track='5', planned_departure='17:07', expected_departure='17:09', cancelled=False, delay=2)

Departure(transport_type='SBAHN', label='S3', destination='Mammendorf', track='8', planned_departure='17:07', expected_departure='17:11', cancelled=False, delay=4)

Departure(transport_type='SBAHN', label='S4', destination='Geltendorf', track='8', planned_departure='17:11', expected_departure='17:16', cancelled=False, delay=5)

Departure(transport_type='SBAHN', label='S3', destination='Maisach', track='8', planned_departure='17:17', expected_departure='17:21', cancelled=False, delay=4)

Departure(transport_type='SBAHN', label='S4', destination='Grafing-Bahnhof', track='5', planned_departure='17:27', expected_departure='17:29', cancelled=False, delay=2)

Departure(transport_type='SBAHN', label='S3', destination='Mammendorf', track='8', planned_departure='17:27', expected_departure='17:31', cancelled=False, delay=4)

Departure(transport_type='SBAHN', label='S4', destination='Geltendorf', track='8', planned_departure='17:31', expected_departure='17:34', cancelled=False, delay=3)

Departure(transport_type='SBAHN', label='S3', destination='Maisach', track='8', planned_departure='17:37', expected_departure='17:39', cancelled=False, delay=2)

Departure(transport_type='SBAHN', label='S4', destination='Grafing-Bahnhof', track='5', planned_departure='17:47', expected_departure='17:49', cancelled=False, delay=2)

Departure(transport_type='SBAHN', label='S3', destination='Mammendorf', track='8', planned_departure='17:47', expected_departure='17:50', cancelled=False, delay=3)

Departure(transport_type='SBAHN', label='S20', destination='Geltendorf', track='4', planned_departure='17:49', expected_departure='17:51', cancelled=False, delay=2)

Departure(transport_type='SBAHN', label='S4', destination='Geltendorf', track='8', planned_departure='17:51', expected_departure='17:54', cancelled=False, delay=3)

Departure(transport_type='SBAHN', label='S3', destination='Maisach', track='8', planned_departure='17:57', expected_departure='18:00', cancelled=False, delay=3)

Departure(transport_type='SBAHN', label='S4', destination='Grafing-Bahnhof', track='5', planned_departure='18:07', expected_departure='18:09', cancelled=False, delay=2)

Departure(transport_type='SBAHN', label='S3', destination='Mammendorf', track='8', planned_departure='18:07', expected_departure='18:10', cancelled=False, delay=3)

Departure(transport_type='SBAHN', label='S4', destination='Geltendorf', track='8', planned_departure='18:11', expected_departure='18:14', cancelled=False, delay=3)

Departure(transport_type='SBAHN', label='S3', destination='Maisach', track='8', planned_departure='18:17', expected_departure='18:17', cancelled=False, delay=0)

Departure(transport_type='SBAHN', label='S3', destination='Mammendorf', track='8', planned_departure='18:27', expected_departure='18:27', cancelled=False, delay=0)

Departure(transport_type='SBAHN', label='S4', destination='Grafing-Bahnhof', track='5', planned_departure='18:27', expected_departure='18:27', cancelled=False, delay=0)

Departure(transport_type='SBAHN', label='S4', destination='Geltendorf', track='8', planned_departure='18:31', expected_departure='18:31', cancelled=False, delay=0)

this results

Grafing-Bahnhof 5

Mammendorf 8

Geltendorf 8

Maisach 8

Grafing-Bahnhof 5

Mammendorf 8

Geltendorf 4

Geltendorf 8

Maisach 8

Grafing-Bahnhof 5

Mammendorf 8

Geltendorf 8

Maisach 8

Grafing-Bahnhof 5

Mammendorf 8

Geltendorf 8

Maisach 8

Mammendorf 8

Geltendorf 8

Maisach 8

but its the track not the delay
with the delay

{% for x in state_attr('sensor.pasing', 'departures') %}
{{ x.destination }} {{ x.delay}}
{% endfor %}

it results

Grafing-Bahnhof 2

Mammendorf 6

Geltendorf 4

Maisach 2

Grafing-Bahnhof 2

Mammendorf 3

Geltendorf 2

Geltendorf 2

Maisach 2

Grafing-Bahnhof 2

Mammendorf 3

Geltendorf 3

Maisach 2

Grafing-Bahnhof 2

Mammendorf 3

Geltendorf 3

Maisach 0

Mammendorf 3

Geltendorf 0

Maisach 0

Its still not working in the automation.

alias: Open Hasp - Abfahrten
description: ""
trigger:
  - platform: time_pattern
    minutes: "*"
action:
  - repeat:
      count: 6
      sequence:
        - service: mqtt.publish
          data_template:
            topic: hasp/openhasp01/command/p1b{{ repeat.index + 3 }}.text
            payload: >
              {% set departure = state_attr('sensor.pasing','departures')[repeat.index - 1] %} 
              {{departure['label'] }} {{ departure['destination'] }}  {{departure['planned_departure'] }} -  
              {% if departure['delay'] | int(0) > 0 %}
                #FF0000 {{ departure['delay'] }} -
              {% endif %} 
              {{ departure['expected_departure'] }}
mode: single

In the template editor this is working

{% for x in state_attr('sensor.pasing', 'departures') %}
{{ x.destination }} {{ x.delay}} {% if x.delay | int(0) > 0 %} Delay is {{ x.delay }} minutes {% endif %}
{% endfor %}

and without | int(0) also

{% for x in state_attr('sensor.pasing', 'departures') %}
{{ x.destination }} {{ x.delay}} {% if x.delay > 0 %} Delay is {{ x.delay }} minutes {% endif %}
{% endfor %}

result

Mammendorf 2  Delay is 2 minutes 

Geltendorf 2  Delay is 2 minutes 

Mammendorf 2  Delay is 2 minutes 

Geltendorf 0 

Mammendorf 0 

Geltendorf 0 

Mammendorf 0 

Geltendorf 0 

Sometimes its easy. I found the problem. It was a line break
This is working

              {% set departure = state_attr('sensor.pasing','departures')[repeat.index - 1] %} 
              {{departure['label'] }} {{ departure['destination'] }} {{departure['planned_departure'] }} - 
              {% if departure['delay'] | int(0) > 0 %} #FF0000 {{ departure['delay'] }} # -{% endif %} {{ departure['expected_departure'] }}