I’m trying to get a script built. I want to check if a variable exist and include it if it does. Just really struggling to figure out the formatting. Something like

script:
  sequence:
    target:
      entity_id: "{{ entity }}"
    {% if variable is defined %}
      data: "{{ variable }}"
    {% endif %}
  • @OtkazOP
    link
    English
    21 year ago

    Is it possible to do this in a way that completely omits data: from the command if the variable isn’t defined?

    • @bob_wiley
      link
      English
      3
      edit-2
      1 year ago

      deleted by creator

      • @OtkazOP
        link
        English
        11 year ago

        It worked the same as your suggestion above. In cases the variable is used it does works as intended but in the situation the variable is not set it’s still sending data: just with a blank value.

        • @bob_wiley
          link
          English
          1
          edit-2
          1 year ago

          deleted by creator

          • @OtkazOP
            link
            English
            11 year ago

            When I tried playing with omit in the template editor I got an error about omit being undefined so probably not built in. Bummer because that would be a very elegant solution to this. I’m going to put this down for the night and try picking it back up tomorrow. I really appreciate all the suggestions. Hopefully it will lead me to a solution.

            • @bob_wiley
              link
              English
              1
              edit-2
              1 year ago

              deleted by creator

    • @OtkazOP
      link
      English
      2
      edit-2
      1 year ago

      To give more context I’m working on a media control dashboard. The script or rather scripts I have to send commands to kodi is as follows

      kodi_control:
        sequence:
        - service: kodi.call_method
          target:
            entity_id: '{{ kodi_entity }}'
          data:
            method: '{{ kodi_method }}'
      
      kodi_control_playback:
        sequence:
        - service: kodi.call_method
          target:
            entity_id: '{{ kodi_entity }}'
          data:
            method: '{{ kodi_method }}'
            playerid: '{{ kodi_playerid }}'
      
      kodi_control_subtitles:
        sequence:
        - service: kodi.call_method
          target:
            entity_id: '{{ kodi_entity }}'
          data:
            method: '{{ kodi_method }}'
            action: '{{ kodi_action }}'
      
      kodi_control_seek:
        sequence:
        - service: kodi.call_method
          target:
            entity_id: '{{ kodi_entity }}'
          data:
            method: '{{ kodi_method }}'
            playerid: '{{ kodi_playerid }}'
            value: '{{ kodi_value }}'
      
      kodi_control_playlist:
        sequence:
        - service: kodi.call_method
          target:
            entity_id: '{{ kodi_entity }}'
          data:
            method: '{{ kodi_method }}'
            window: '{{ kodi_window }}'
            parameters: '{{ [ kodi_parameters ] }}'
      

      I would like to condense all of this down to a single script using “is defined” to omit the parts not needed for certain commands so something like

      kodi_control:
        sequence:
        - service: kodi.call_method
          target:
            entity_id: '{{ kodi_entity }}'
          data: >-
            method: '{{ kodi_method }}'
            {% if kodi_playerid is defined %}
              playerid: '{{ kodi_playerid }}'
            {% endif %}
            {% if kodi_action is defined %}
              action: '{{ kodi_action }}'
            {% endif %}
            {% if kodi_value is defined %}
              value: '{{ kodi_value }}'
            {% endif %}
            {% if kodi_window is defined %}
              window: '{{ kodi_window }}'
            {% endif %}
            {% if kodi_parameters is defined %}
              parameters: '{{ [ kodi_parameters ] }}'
            {% endif %}
      

      Problem with the above is I get “result is not a dictionary”

      • @bob_wiley
        link
        English
        3
        edit-2
        1 year ago

        deleted by creator