What's wrong with my templated if / else message?

Hi,
I want to get an persistent.notification with some dynamic generated content.

Therefore, I have built the following code - with a “big” if/else:

service: notify.persistent_notification
data:
  title: Benachrichtigung von Siemens EQ.9
  message: >-
    {% set Enum_programm_type = states('sensor.siemens_ti9578x1de_68a40e8445de_selected_program') %}
    {% set Translated_program_type = Enum_programm_type.split('.')[4] %}
    {% if Translated_program_type, 'Cofee' %}
      {% set Program = 'Café Crema' %}
    {% elif Translated_program_type, 'Espresso' %}
      {% set Program = 'Espresso' %}
	{% elif Translated_program_type, 'CaffeLatte' %}
	  {% set Program = 'Milchkaffee' %}
	{% elif Translated_program_type, 'Cappuccino' %}
	  {% set Program = 'Cappuccino' %}
	{% elif Translated_program_type, 'EspressoDoppio' %}
	  {% set Program = 'Espresso doppio' %}
	{% elif Translated_program_type, 'EspressoMacchiato' %}
	  {% set Program = 'Espresso Macchiato' %}
	{% elif Translated_program_type, 'LatteMacchiato' %}
	  {% set Program = 'Latte Macchiato' %}
	{% elif Translated_program_type, 'MilkFroth' %}
	  {% set Program = 'Milchschaum' %}
	{% elif Translated_program_type, 'Ristretto' %}
	  {% set Program = 'Ristretto' %}
	{% elif Translated_program_type, 'WarmMilk' %}
	  {% set Program = 'Warme Milch' %}
	{% elif Translated_program_type, 'Americano' %}
	  {% set Program = 'Americano' %}
	{% elif Translated_program_type, 'BlackEye' %}
	  {% set Program = 'BlackEye' %}
	{% elif Translated_program_type, 'CafeAuLait' %}
	  {% set Program = 'Café au lait' %}
	{% elif Translated_program_type, 'CafeConLeche' %}
	  {% set Program = 'Café con leche' %}
	{% elif Translated_program_type, 'Cortado' %}
	  {% set Program = 'Cortado' %}
	{% elif Translated_program_type, 'DeadEye' %}
	  {% set Program = 'Dead Eye' %}
	{% elif Translated_program_type, 'Doppio' %}
	  {% set Program = 'Doppio' %}
	{% elif Translated_program_type, 'FlatWhite' %}
	  {% set Program = 'Flat White' %}
	{% elif Translated_program_type, 'Galao' %}
	  {% set Program = 'Galão' %}
	{% elif Translated_program_type, 'Garoto' %}
	  {% set Program = 'Garoto' %}
	{% elif Translated_program_type, 'GrosserBrauner' %}
	  {% set Program = 'Großer Brauner' %}
	{% elif Translated_program_type, 'Kaapi' %}
	  {% set Program = 'Kaapi' %}
	{% elif Translated_program_type, 'KleinerBrauner' %}
	  {% set Program = 'Kleiner Brauner' %}
	{% elif Translated_program_type, 'KoffieVerkeerd' %}
	  {% set Program = 'Koffie verkeerd' %}
	{% elif Translated_program_type, 'RedEye' %}
	  {% set Program = 'RedEye' %}
	{% elif Translated_program_type, 'Verlaengerter' %}
	  {% set Program = 'Verlängerter' %}
	{% elif Translated_program_type, 'VerlaengerterBraun' %}
	  {% set Program = 'Verlängerter braun' %}
	{% elif Translated_program_type, 'WienerMelange' %}
	  {% set Program = 'Wiener Melange' %}
        {% else %}
          {% set Program = '' %}
        {% endif %}

    Dein {{ Program }} ist fertig.

But it seems, that only the first “if” statement will be taken - the variable “Program” is always filled with the same text…
It does always use “Café Crema” … now, I am not sure if I made a mistake, or if these if/else are not working in the message configuration.

From the developer-Tools, it can be seen, that the sensor does have another value - it should take “Espresso”

This can also be verified if I am just outputting the last part of the Value:

{% set Enum_program_type = states('sensor.siemens_ti9578x1de_68a40e8445de_selected_program') %}
    {% set Translated_program_type = Enum_program_type.split('.')[4] %}
      {{ Translated_program_type }}

Then, the template editor is showing the correct content

Here you can see the output of the state - and below what will be displayed after running through the If / else… I do need the if else block to translate some of the Strings into another language.

Replace all commas with ==:


    {% if Translated_program_type == 'Cofee' %}

    {% elif Translated_program_type == 'Espresso' %}

A shorter alternative would be:


{% set Enum_programm_type = states('sensor.siemens_ti9578x1de_68a40e8445de_selected_program') %}
{% set Translated_program_type = Enum_programm_type.split('.')[4] %}
{% set Program = { 'Cofee': 'Café Crema',
                   'Espresso': 'Espresso',
                   'CaffeLatte': 'Milchkaffee',
                    …,
                    …,
                    'WienerMelange': 'Wiener Melange' } %}

Dein {{ Program[Translated_program_type] if Translated_program_type in Program.keys() else ' ' }} ist fertig.

1 Like

thanks - I’ll try it.
That means - another cup of coffee + something else at half past 8 in the evening :smiley:

with your example - I just noticed, that I can reduce more of the code - because I do have the translation pattern from the integration - and then, I don’t need to split :slight_smile: