Synchronisation von Werten mit KNX (Personenstatus)

Ich habe in unserer Wohnung KNX installiert. Zudem habe ich noch eine anderes Smart Home System (Edomi) im Einsatz und bin langsam am Umziehen in Richtung HA und würde hier gern weiter machen.

In den einzelnen Schlafzimmer habe ich einen KNX Taster über den sich der jeweilige Bewohner auf schlafen oder “wach” setzen kann. Darüber werden dann Steckdosen und Licht aus oder an geschalten und wenn alle schlafen auch das Haus auf schlafen oder “wach” geschaltet. Aktuell lese ich den Bewohnerstatus nur vom KNX Bus schreibe aber noch nicht. Das würde ich jetzt gerne tun.

Ich habe eine Automation die meinen Personenstatus aus verschiedenen Quellen überwacht (HA Dropdowns, KNX, MQTT (Edomi)) und würde diese nun gern nutzen um auch meinen KNX Bus upzudaten. Allerdings soll die jeweilige Person auf dem Bus nur geupdated werden wenn der aktuelle Wert auf dem KNX Bus unterschiedlich zu dem in HA ist um eine Schleife zu vermeiden.
Um die Werte in HA upzudaten (Dropdown) nutze ich ein Template.

service: input_select.select_option
data_template:
  option: "{{trigger.id}}"
target:
  entity_id: "{{trigger.entity_id.replace('person', 'input_select')}}"

Ich kenne mich nicht gut genug mit Automationen aus, um die Automationen zu erweitern und ein Templates zu entwickeln welches den Wert des Dropdowns (z.B. input_select.lennard; Zuhause und Schlafend ) mit dem Wert vom KNX Bus (z.B. switch.lennard_schlafstatus 1 = schlafen und 0 = wach) vergleicht und nur wenn die unterschiedlich sind auf den KNX Bus schreibt.
Kann mir hier jemand helfen.

Hier noch die gesamte Automation:

alias: Ändere Personen Status aus Dropdown
description: Ändere den Status der Personen auf Basis eines Input Boolean
trigger:
  - platform: state
    id: Gerade angekommen
    entity_id:
      - person.thomas
      - person.sydney
      - person.lennard
      - person.helen
      - person.gast
      - person.marion
    from: not_home
    to: home
    for:
      hours: 0
      minutes: 1
      seconds: 0
    alias: >-
      Person Status von "Abwesend" zu "Zu Hause" für 1 Minute: ID "Gerade
      angekommen"
  - alias: "Person Status von \"Zuhause\" auf \"Schlafend\": ID \"Schlafend\""
    platform: state
    id: Schlafend
    entity_id:
      - input_select.helen
      - input_select.thomas
      - input_select.marion
      - input_select.lennard
      - input_select.sydney
      - input_select.gast
    from: Zuhause
    to: Schlafend
  - alias: "Nach 5 Minuten Personen Status \"Gerade angekommen\": ID \"Zuhause\""
    platform: state
    id: Zuhause
    entity_id:
      - input_select.thomas
      - input_select.marion
      - input_select.sydney
      - input_select.lennard
      - input_select.helen
      - input_select.gast
    to: Gerade angekommen
    for:
      hours: 0
      minutes: 5
      seconds: 0
  - alias: "Person Status von \"Schlafend\" auf \"Zuhause\": ID \"Zuhause\""
    platform: state
    id: Zuhause
    entity_id:
      - input_select.helen
      - input_select.thomas
      - input_select.marion
      - input_select.sydney
      - input_select.lennard
      - input_select.gast
    from: Schlafend
    to: Zuhause
  - platform: state
    id: Gerade gegangen
    entity_id:
      - person.thomas
      - person.marion
      - person.sydney
      - person.lennard
      - person.helen
      - person.gast
    from: home
    to: not_home
    for:
      hours: 0
      minutes: 1
      seconds: 0
    alias: "Person Status von \"Zu Hause\" auf \"Abwesend\": ID \"Gerade gegangen\""
  - alias: "Nach 5 Minuten Personen Status \"Gerade gegangen\": ID \"Nicht zuhause\""
    platform: state
    entity_id:
      - input_select.thomas
      - input_select.marion
      - input_select.sydney
      - input_select.lennard
      - input_select.helen
      - input_select.gast
    to: Gerade gegangen
    for:
      hours: 0
      minutes: 5
      seconds: 0
    id: Nicht zuhause
condition: []
action:
  - service: input_select.select_option
    data_template:
      option: "{{trigger.id}}"
    target:
      entity_id: "{{trigger.entity_id.replace('person', 'input_select')}}"
  - service: notify.mobile_app_thomas_iphone
    data:
      title: Wechsel Personenstatus nur an Thomas
      message: >-
        Wechsel Personen Status von {{trigger.entity_id.replace('person.',
        '').replace('input_select.', '').replace('helen',
        'Helen').replace('marion', 'Marion').replace('sydney',
        'Sydney').replace('lennard', 'Lennard').replace('thomas',
        'Thomas').replace('gast', 'Gast')}} auf {{trigger.id}}
mode: single

Der Service/Dienst knx.send ist das Zauberwort…

KNX - Home Assistant (home-assistant.io)

Ich habe den “Schlafmodus” als Switch in HA eingebunden somit kann ich es einfach als Schalter steuern.
Das war aber nicht meine Frage. Ich suche Hilfe wie ich meine Automation erweitern kann um per Template meine Dropdown für die Person mit dem KNX Schlafstatus der Person zu vergleichen und wenn die nicht gleich sind dann entsprechend den Schalter schalten kann. Ich hatte die Hoffnung das es hier Template Gurus gibt die mir hier helfen können. Über den Trigger bekomme ich ja raus für welche Person die Dropdown Liste geändert wurde.

Ich bin ein ganzes Stück weiter gekommen, mit Hilfe von Variablen bin ich nun in der Lage den Status des Switches abzufragen. Nun brauche ich nur noch den Teil bauen um bei Bedarf den Schlafstatus auf dem KNX Bus auch wirklich upzudaten.

choose:
  - conditions:
      - condition: trigger
        id:
          - Schlafend
          - Zuhause
    sequence:
      - variables:
          entity_name: "{{ trigger.entity_id.replace('input_select.', '') }}"
          knx_entity: "{{ 'switch.' + entity_name + '_schlafstatus' }}"
          knx_status: "{{ 'Zuhause' if is_state(knx_entity, 'off') else 'Schlafend' }}"
      - service: notify.mobile_app_thomas_iphone
        metadata: {}
        data:
          title: KNX Schlafstatus ermittelt
          message: >-
            Auf dem KNX Bus ist der Schlafstatus von {{ entity_name}} = {{
            knx_status }}