Problème d'automatisations et script pour portail

Tu as la réponse si dessous :

        portail_carte:
          card:
            type: custom:button-card
            name: 'Portail :'
            label: |
              [[[
                if (states['input_number.portail_position'].state == '0.0')
                  return "fermé";
                else if (states['input_number.portail_position'].state == '1.0')
                  return "ouvert";
                else if (states['input_number.portail_position'].state == '2.0' && states['input_number.portail_sens'].state == '0.0')
                  return "ouverture en cours";
                else if (states['input_number.portail_position'].state == '2.0' && states['input_number.portail_sens'].state == '1.0')
                  return "fermeture en cours";
                else if (states['input_number.portail_position'].state == '3.0')
                  return "partiellement ouvert";
              ]]]
            show_label: true
            layout: name_label
            styles:
              grid:
                - grid-template-areas: '"n" "l"'
                - grid-template-rows: min-content min-content
                - grid-template-columns: min-content
              name:
                - font-size: 1.0em
                - font-weight: bold
                - padding-left: 140px
                - padding-top: 15px
                - color: rgba(0,0,0,0.6)
              label:
                - font-size: 1.1em
                - font-weight: bold
                - padding-left: 140px
                - padding-top: 5px
                - align-self: start
                - text-align: start
                - color: |
                    [[[
                      if (states['input_number.portail_position'].state == '0.0')
                        return 'rgba(64,192,64,1.0)';
                      else if (states['input_number.portail_position'].state == '1.0')
                        return 'rgba(255,0,0,1.0)';
                      else if (states['input_number.portail_position'].state == '2.0')
                        return 'rgba(255,140,0,1.0)';
                      else if (states['input_number.portail_position'].state == '3.0')
                        return 'rgba(255,140,0,1.0)';
                    ]]]
                - animation: |
                    [[[
                      if (states['input_number.portail_position'].state == '1.0')
                        return 'blink 2s ease infinite';
                      else if (states['input_number.portail_position'].state == '2.0')
                        return 'blink 2s ease infinite';
                      else if (states['input_number.portail_position'].state == '3.0')
                        return 'blink 2s ease infinite';
                    ]]]
              card:
                - background-image: >-
                    linear-gradient(135deg, rgba(64,64,64,1.0) 0%,
                    rgba(96,96,96,1.0) 25%, rgba(128,128,128,1.0) 100%)
                - border-radius: 10px
                - box-shadow: 4px 4px 8px 0px rgba(32,32,32,0.5)
                - border: 2px rgba(32,32,32,0.5) outset
                - width: 320px
                - height: 180px
            tap_action:
              action: none
            hold_action:
              action: none
        portail_fond:
          card:
            type: custom:button-card
            styles:
              card:
                - background-color: |
                    [[[
                      if (states['input_number.portail_position'].state == '0.0')
                        return 'rgba(64,192,64,1.0)';
                      else if (states['input_number.portail_position'].state == '1.0')
                        return 'rgba(255,0,0,0.5)';
                      else if (states['input_number.portail_position'].state == '2.0')
                        return 'rgba(255,140,0,0.5)';
                      else if (states['input_number.portail_position'].state == '3.0')
                        return 'rgba(255,140,0,0.5)';
                    ]]]
                - box-shadow: |
                    [[[
                      if (states['input_number.portail_position'].state == '0.0')
                        return '0px 0px 5px 5px rgba(64,192,64,1.0)';
                      else if (states['input_number.portail_position'].state == '1.0')
                        return '0px 0px 5px 5px rgba(255,0,0,0.5)';
                      else if (states['input_number.portail_position'].state == '2.0')
                        return '0px 0px 5px 5px rgba(255,140,0,0.5)';
                      else if (states['input_number.portail_position'].state == '3.0')
                        return '0px 0px 5px 5px rgba(255,140,0,0.5)';
                    ]]]
                - animation: |
                    [[[
                      if (states['input_number.portail_position'].state == '1.0')
                        return 'blink 2s ease infinite';
                      else if (states['input_number.portail_position'].state == '2.0')
                        return 'blink 2s ease infinite';
                      else if (states['input_number.portail_position'].state == '3.0')
                        return 'blink 2s ease infinite';
                    ]]]
                - border: none
                - width: 66px
                - height: 66px
                - border-radius: 50%
        portail_icone:
          card:
            type: custom:button-card
            entity_picture: |
              [[[
                if (states['input_number.portail_position'].state == '0.0')
                  return '/local/images/icones/portail_ferme.png';
                else if (states['input_number.portail_position'].state == '1.0')
                  return '/local/images/icones/portail_ouvert.png';
                else if (states['input_number.portail_position'].state == '2.0')
                  return '/local/images/icones/portail_mouvement.png';
                else if (states['input_number.portail_position'].state == '3.0')
                  return '/local/images/icones/portail_mouvement.png';
              ]]]
            show_entity_picture: true
            styles:
              card:
                - background-color: rgba(64,192,64,0.0)
                - border: none
                - width: 66px
                - height: 66px
                - border-radius: 50%
              entity_picture:
                - width: 90%
                - opacity: 100%
        portail_ouvrir:
          card:
            type: custom:button-card
            show_name: false
            styles:
              card:
                - background-color: rgba(255,255,255,0.0)
                - background-image: url(/local/images/icones/portail_ouvrir.png)
                - background-size: cover
                - box-shadow: 2px 2px 4px 0px rgba(32,32,32,0.5)
                - border: 2px rgba(211,211,211,1.0) outset
                - border-radius: 50%
                - height: 72px
                - width: 72px
            tap_action:
              action: call-service
              service: script.allee_du_garage_actionner_portail
        portail_fermer:
          card:
            type: custom:button-card
            show_name: false
            styles:
              card:
                - background-color: rgba(255,255,255,0.0)
                - background-image: url(/local/images/icones/portail_fermer.png)
                - background-size: cover
                - box-shadow: 2px 2px 4px 0px rgba(32,32,32,0.5)
                - border: 2px rgba(211,211,211,1.0) outset
                - border-radius: 50%
                - height: 72px
                - width: 72px
            tap_action:
              action: call-service
              service: script.allee_du_garage_actionner_portail

Si j’utilise simplement les ‹ on › ou ‹ off › des capteurs d’ouverture, je ne peux pas déterminer le sens de déplacement du portail et il me faut des 'if" et ‹ else if › très, très, très longs…