Parameter an Skript übergeben und dort auswerten

Hallo,
irgendwie fehlt mir das Verständnis für das Auswerten von Ausdrücken in Skripten.

Ich versuche gerade ein Cover Template zu erstellen, das verhindert, dass der Rolladen heruntergefahren wird, solange noch jemand auf dem Balkon ist.
Dazu habe ich ein Skript erstellt, das alle Serviceaufrufe managen soll, also öffnen, schließen, stoppen und auf Position setzen. Dafür übergebe ich 2 Parameter an das Script {{modus}} und {{position}}
Egal, welchen Dienst ich für das Template Cover aufrufe ich lande immer in der Standardaktion der Optionen, der eigentlich nie ausgeführt werden sollte, da alle möglichen Optionen/Modi behandelt werden.

In den Debug Ausgaben des Skriptes sehe ich auch, dass die Parameter richtig übergeben wurden.

Allerdings liefern mir die Ausdrücke, mit denen ich den Inhalt der variablen überprüfen will, immer den Wert false zurück.

Kann mir bitte jemand von euch auf die Sprünge helfen was ich was ich hier falsch mache?

Mein Cover Template sieht so aus:

cover:
  - platform: template
    covers:
      balkon_cover:
        device_class: shutter
        friendly_name: "Balkonrolladen"
        value_template: "{{ states('cover.rolladen_balkon') }}"
        position_template: "{{ state_attr('cover.rolladen_balkon','current_position') }}"
        open_cover:
          service: script.Steuerung_Balkon_Rolladen_sicher
          data:
            modus: "open"
        close_cover:
          service: script.Steuerung_Balkon_Rolladen_sicher
          data:
            modus: "close"
        stop_cover:
          service: script.Steuerung_Balkon_Rolladen_sicher
          data:
            modus: "stop"
        set_cover_position:
          service: script.Steuerung_Balkon_Rolladen_sicher
          data:
            modus: "set_position"
            position: "{{ position }}"

und das dazugehörige Script in dem die Expressions nicht machen was ich will:

alias: Steuerung_Balkon_Rolladen_sicher
sequence:
  - service: script.notify_send_message_to_phone
    metadata: {}
    data:
      title: "Debug: Benachrichtigung bei start"
      message: Werte übergeben {{modus}} {{position}}
  - choose:
      - conditions:
          - condition: template
            value_template: "{{modus}} == 'stop'"
        sequence:
          - service: cover.stop_cover
            target:
              entity_id: cover.rolladen_balkon
            data: {}
        alias: Stoppen
      - conditions:
          - condition: template
            value_template: "{{modus}} == 'open'"
        sequence:
          - service: cover.open_cover
            data: {}
            target:
              entity_id: cover.rolladen_balkon
        alias: Öffnen
      - conditions:
          - condition: template
            value_template: "{{modus}} == 'close'"
        sequence:
          - if:
              - condition: state
                entity_id: binary_sensor.aquara_presence_balkon_geplant_presence
                state: "on"
            then:
              - wait_for_trigger:
                  - platform: state
                    entity_id:
                      - binary_sensor.aquara_presence_balkon_geplant_presence
                    to: "off"
              - service: cover.close_cover
                target:
                  entity_id:
                    - cover.rolladen_balkon
                data: {}
        alias: Schliessen
      - conditions:
          - condition: template
            value_template: "{{modus}} == 'set_position'"
        sequence:
          - if:
              - condition: and
                conditions:
                  - condition: state
                    entity_id: binary_sensor.aquara_presence_balkon_geplant_presence
                    state: "on"
                  - condition: template
                    value_template: "{{position}} | int < 80"
            then:
              - wait_for_trigger:
                  - platform: state
                    entity_id:
                      - binary_sensor.aquara_presence_balkon_geplant_presence
                    to: "off"
              - service: cover.set_cover_position
                target:
                  entity_id: cover.rolladen_balkon
                data:
                  "[object Object]": null
            else:
              - service: cover.set_cover_position
                target:
                  entity_id: cover.rolladen_balkon
                data:
                  "[object Object]": null
        alias: "Auf Position "
    enabled: true
    default:
      - service: script.notify_send_message_to_phone
        metadata: {}
        data:
          title: "Debug: Benachrichtigung Standardaktion ??"
          message: Werte übergeben {{modus}} {{position}}
        enabled: true
mode: single

So nach viel rumbastelei und zahllosen try and error Durchgängen habe ich es tatsächlich selbst geschafft, das Ding zum Laufen zu bekommen.

Am Ende habe ich’s dann sogar mein bisheriges Rolladengerät mit sämtlichen Entitäten umbenannt und versteckt, damit klar ist, dass dieses Gerät nicht direkt bedient werden soll, sondern nur das zuvorgeschaltete Template Cover verwendet werden sollte.
Mein Template Cover und das dazugehörige Skript sind hier anbei.

Template Cover:

cover:
  - platform: template
    covers:
      rolladen_balkon:
        unique_id: GESICHERTEBALKONROLLADENSTEUERUNG
        device_class: shutter
        friendly_name: "Rolladen Balkon"
        value_template: "{{ states('cover.rolladen_device_balkon') }}"
        position_template: "{{ state_attr('cover.rolladen_device_balkon','current_position') }}"
        open_cover:
          service: script.steuerung_balkon_rolladen_sicher
          data:
            modus: "open"
        close_cover:
          service: script.steuerung_balkon_rolladen_sicher
          data:
            modus: "close"
        stop_cover:
          service: script.steuerung_balkon_rolladen_sicher
          data:
            modus: "stop"
        set_cover_position:
          service: script.steuerung_balkon_rolladen_sicher
          data:
            modus: "set_position"
            neueposition: "{{ position }}"

Script für die Rolladensteuerung:

alias: Steuerung Balkon Rolladen sicher
sequence:
  - choose:
      - conditions:
          - condition: template
            value_template: |-
              {%- if (modus in [ "open", "stop"]) -%} 
              true  {%- else -%}  false  {%- endif -%}
            alias: Prüfen Öffnen oder Stopp
        sequence:
          - service: cover.{{modus}}_cover
            target:
              entity_id:
                - cover.rolladen_device_balkon
        alias: Risikofrei - öffnen oder stopp
      - conditions:
          - alias: Prüfe auf Schliessen
            condition: template
            enabled: true
            value_template: |-
              {%- if (modus == "close") -%} true
              {%- else -%} false 
              {%- endif -%}
        sequence:
          - alias: Warte auf -no presence-
            if:
              - condition: state
                entity_id: binary_sensor.aquara_balkon_presence
                state: "on"
            then:
              - wait_for_trigger:
                  - platform: state
                    entity_id:
                      - binary_sensor.aquara_balkon_presence
                    to: "off"
          - service: cover.close_cover
            metadata: {}
            data: {}
            target:
              entity_id: cover.rolladen_device_balkon
        alias: Schliessen
      - conditions:
          - alias: Prüfe auf Set Position
            condition: template
            value_template: |-
              {%- if ( modus == "set_position" ) -%} true 
              {%- else -%} false 
              {%- endif -%}
            enabled: true
        sequence:
          - alias: Warte auf -no presence-
            if:
              - condition: state
                entity_id: binary_sensor.aquara_balkon_presence
                state: "on"
              - condition: template
                value_template: |-
                  {%- if ( neueposition | int <=70) -%} true 
                  {%- else -%} false 
                  {%- endif -%}
            then:
              - alias: Warte auf no-presence
                wait_for_trigger:
                  - platform: state
                    entity_id:
                      - binary_sensor.aquara_balkon_presence
                    to: "off"
          - service: cover.set_cover_position
            metadata: {}
            data:
              position: "{{ neueposition|int }}"
            target:
              entity_id: cover.rolladen_device_balkon
            enabled: true
        alias: Position setzen
    enabled: true
mode: restart

Vielleicht hilft es ja dem einen oder anderen. :wink: