Template Condition: Ist ein Wert im State enthalten?

Hallo Gemeinde,

ich möchte in einer Automatisierung eine Template Bedingung einfügen bei der mehrere mögliche Werte in einem State geprüft werden sollen. Die Werte setzten sich aus einen Namen und den Finger zusammen:

“Name1 (Dl)” oder “Name2 (Zfr)”

Folgende Templates habe ich ausprobiert:

{{ ('Name1', 'Name2') in states('sensor.fingerprint_name') }}

Problem: String anstatt Liste wird erwartet

{{ states('sensor.fingerprint_name')  in ('Name1', 'Name2') }}

Problem hierbei: Der Suchwert muss zu 100% mit dem State übereinstimmen.

Habt ihr eine Idee?

Cheers

Um mehrere mögliche Werte in einem State zu prüfen, bei denen sich die Werte aus einem Namen und einem Finger zusammensetzen, kannst du eine Template-Bedingung mit der in-Funktion und einer partiellen Übereinstimmung verwenden.

condition: template
value_template: >
  {{ states('sensor.fingerprint_name').split()[0] in ['Name1', 'Name2'] }}

Diese Template-Bedingung funktioniert folgendermaßen:

  1. states('sensor.fingerprint_name') gibt den aktuellen Wert des Sensors zurück.
  2. .split() teilt den String am Leerzeichen und nimmt das erste Element, also den Namen.
  3. in ['Name1', 'Name2'] prüft, ob der extrahierte Name in der Liste der möglichen Namen enthalten ist.

Wenn du auch den Finger in die Bedingung einbeziehen möchten, kannst du das Template erweitern:

condition: template
value_template: >
  {% set fingerprint = states('sensor.fingerprint_name') %}
  {{ fingerprint.split()[0] in ['Name1', 'Name2'] and 
     ('Dl' in fingerprint or 'Zfr' in fingerprint) }}

Dieses erweiterte Template prüft sowohl den Namen als auch das Vorhandensein von ‘Dl’ oder ‘Zfr’ im gesamten String[2][8].

Beachte, dass diese Lösung flexibler ist als deine ursprünglichen Versuche, da sie eine partielle Übereinstimmung erlaubt und sowohl den Namen als auch den Finger berücksichtigt.