Forum Francophone Home Assistant

Récupérer la valeurs d'une variable dans un script

Bonjour à tous ceux qui liront ce message.

Pour poser le décors, je suis débutant sur HA, celui-ci est installé dans un environnement virtuel sur raspberry pi3.
Après avoir beaucoup tâtonné, trouvé des solutions (merci beaucoup pour ce forum au passage), je coince depuis quelques temps.

Dans un script appelé lors d’une automation, je tente (sans succès) de récupérer la valeurs d’une variable pour la transférer dans une seconde (qui sert de point de comparaison lors de changements) au travers d’un appel à value: « {{ states ( ‹ {{actuel}} › ) | int }} » dans le script « diminuer_luminosite » :

 diminuer_luminosite:
      mode: queued
      sequence:
        - alias: diminuer la luminosité
          repeat:
            count: "{{ states( 'input_number.old_luminosite_led0' ) | int - states( 'input_number.luminosite_led0' ) | int }}" 
            sequence:
              service: switch.turn_off
              data:
                entity_id: "{{ cible }}"
        - alias: mettre à jour old value
          service: input_number.set_value
          data:
            entity_id: "{{ memoire }} "
            value: "{{ states ( '{{actuel}}' ) | int }}"
 
  augmenter_luminosite:
      mode: queued
      sequence:
        - alias: augmenter la luminosité
          repeat:
            count: "{{ states('input_number.luminosite_led0') | int - states('input_number.old_luminosite_led0') | int }}" 
            sequence:
              service: switch.turn_on
              target:
                entity_id: switch.variateur_luminosite_led0
        - alias: mettre à jour old value
          service: input_number.set_value
          target:
            entity_id: input_number.old_luminosite_led0
          data:
            value: "{{ states.input_number.luminosite_led0.state | int }}"

(la fonction augmenter_luminosite ne fonctionnant que pour une seule entité, je l’ai laissé pour servir de comparaison, si cela peut « éclairer » mon propos).

Le but étant de pouvoir faire appel à cette fonction depuis plusieurs automations différentes concernant différents rubans led commandés par IR et RF.

N’ayant pas trouvé la réponse par moi-même (désolé si cela a déjà été résolu auparavant je n’ai pas trouvé la réponse lors de mes recherches) je me tourne vers vous.

Merci par avance pour vos réponses.

Bonjour,

pour ce qui est d’affecter ou comparer une variable,
je peut te donner mon script qui vérifié les appels manqués de ma freebox :

alias: Notification Freebox Missed Calls
trigger:
  - platform: template
    value_template: >-
      {{ (states('sensor.freebox_missed_calls') | int) >
      (states('input_number.freebox_missed_calls') | int) }}
action:
  - service: notify.notify
    data:
      message: Freebox Appels Manqués ({{ now().strftime('%d.%m.%Y - %H:%M') }})
  - service: input_number.set_value
    data:
      entity_id: input_number.freebox_missed_calls
      value: '{{ states(''sensor.freebox_missed_calls'') | int }}'
mode: single
  • Dans mon trigger je fais une comparaison entre un sensor et une variable
  • Dans mon action j’affecte a ma variable la valeur du sensor

cela ne répond pas a ta question mais je pense que ça fait une base de départ,
sinon, tu peut aller dans Outils de développement / Modèle pour faire des essais avant de te lancer dans une automatisation …

Stéphane

Bonsoir Steph

Merci beaucoup pour ta réponse!
Pour le coup j’ai utilisé un subterfuge pour contourner mon problème : envoyer les variables formatées en int lors de l’appel du script au lieu de tenter de les récupérer au sein même du script.

1 J'aime