Forum Francophone Home Assistant

Probème avec script et service_template

Bonjour à tous,

Débutant dans la programmation Yaml, je rencontre un soucis…
J’ai créé un script me permettant d’ouvrir les volets et de positionner mes BSO.

Si me BSO sont déjà à la bonne position, j’aimerais ne pas les fermer pour ensuite remettre correctement les lames…

J’ai fait ce script :

bso_ouvre_cuisine_autres_tilt_100:
  alias: Ouvre BSO Cuisine et lamelles autres
  sequence:
  - service: cover.open_cover
    data:
      entity_id: cover.bso_cuisine
  - service_template: >
      {% if is_state('cover.bso_bv_cuisine', 'open') %}
        cover.close_cover
      {% else %}
      {% endif %}
    data:
      entity_id: cover.bso_bv_cuisine
  - service_template: >
      {% if is_state('cover.bso_sam', 'open') %}
        cover.close_cover
      {% else %}
      {% endif %}
    data:
      entity_id: cover.bso_sam
  - service_template: >
      {% if is_state('cover.bso_bv_salon', 'open') %}
        cover.close_cover
      {% else %}
      {% endif %}
    data:
      entity_id: cover.bso_bv_salon
  - service_template: >
      {% if is_state('cover.bso_pf_salon', 'open') %}
        cover.close_cover
      {% else %}
      {% endif %}
    data:
      entity_id: cover.bso_pf_salon
  - service: cover.set_cover_tilt_position
    data:
      entity_id:
      - cover.bso_bv_cuisine
      - cover.bso_sam
      - cover.bso_bv_salon
      - cover.bso_pf_salon
      tilt_position: 100

Mais cela ne fonctionne pas. J’ai des erreurs en l’exécutant de type :

Ouvre BSO Cuisine et lamelles autres: Error executing script. Unexpected error for call_service at pos 2: Template rendered invalid service:
Traceback (most recent call last):
File « /usr/src/homeassistant/homeassistant/helpers/service.py », line 166, in async_prepare_call_from_config
domain_service = cv.service(domain_service)
File « /usr/src/homeassistant/homeassistant/helpers/config_validation.py », line 463, in service
raise vol.Invalid(f"Service {value} does not match format .")
voluptuous.error.Invalid: Service does not match format .

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
File « /usr/src/homeassistant/homeassistant/helpers/script.py », line 250, in _async_step
await getattr(
File « /usr/src/homeassistant/homeassistant/helpers/script.py », line 429, in _async_call_service_step
domain, service_name, service_data = service.async_prepare_call_from_config(
File « /usr/src/homeassistant/homeassistant/helpers/service.py », line 172, in async_prepare_call_from_config
raise HomeAssistantError(
homeassistant.exceptions.HomeAssistantError: Template rendered invalid service:

Pouvez-vous m’aider ?

Bonjour, et bienvenue
Je n’ai pas copier ton script, mais ça ressemble beaucoup à une automation a choix multiple.
Peut être que tu devrais utiliser plusieurs script , ou directement un scénario a choix , que tu appel avec la fonction turn on/off ( automation)

et tu appel un service open cover, mais dans tes templates, généralement tu demande cover close, étrange

Bonjour et merci pour ton aide.

La solution a été trouvée sur le forum HA :
En fait service_template est obsolete, il faut utiliser service. Et il faut mettre une instruction dans le else pour éviter le renvoi NULL :

bso_ouvre_cuisine_autres_tilt_100:
  alias: Ouvre BSO Cuisine et lamelles autres
  sequence:
  - service: cover.open_cover
data:
  entity_id: cover.bso_cuisine
  - service: >
  {% if is_state('cover.bso_bv_cuisine', 'open') %}
    cover.close_cover
  {% else %}
    cover.stop_cover
  {% endif %}
data:
  entity_id: cover.bso_bv_cuisine
  - service: >
  {% if is_state('cover.bso_sam', 'open') %}
    cover.close_cover
  {% else %}
    cover.stop_cover
  {% endif %}
data:
  entity_id: cover.bso_sam
  - service: >
  {% if is_state('cover.bso_bv_salon', 'open') %}
    cover.close_cover
  {% else %}
    cover.stop_cover
  {% endif %}
data:
  entity_id: cover.bso_bv_salon
  - service: >
  {% if is_state('cover.bso_pf_salon', 'open') %}
    cover.close_cover
  {% else %}
    cover.stop_cover
  {% endif %}
data:
  entity_id: cover.bso_pf_salon
  - service: cover.set_cover_tilt_position
data:
  entity_id:
  - cover.bso_bv_cuisine
  - cover.bso_sam
  - cover.bso_bv_salon
  - cover.bso_pf_salon
  tilt_position: 100
1 J'aime