J’ai actuellement le moyen de monter ou descendre une valeur de consigne à l’aide de boutons + et -
Pour cela j’utilise deux boutons associés à des input_boolean indépendants.
Chacun pilote une automation qui incrémente ou décrémente le même input_number
C’est écrit comme ceci dans mon fichier automation.yaml
Ah si !
Je suis curieux de voir.
A l’époque (récente) où j’ai écris ces automations, je ne connaissais rien des scripts (j’en ai maintenant un ).
Le voir écrit en script serait déjà un premier pas. Si je devais le faire, j’ai le sentiment qu’il ressemblerait à mes automations (donc pas mieux).
Mais passer par des variables… je ne vois pas.
Mais si ! Le fait de passer par 2 scripts permet de supprimer les 2 booléens.
Tu n’auras plus qu’à gérer les scripts pour augmenter et diminuer.
Effectivement si on part d’une automatisation, les scripts reprennent les actions. Sauf que là toi tu n’as plus à gérer l’action de remise à zéro du bouléeb et non plus le délai
Home assistant permet de créer des variables dans les scripts.
Ces variables peuvent être passées en paramètre lors des automatisations ou des appels du service script directement.
Comme je te propose depuis le début de minimiser ton code (qui au début comptait 2 input_boolean et 2 automatisations avec delais et maintenant seulement 2 scripts ), je te proposais donc de passer par des variables pour pouvoir réutiliser ces scripts pour d’autre entités.
Imagine que demain, tu as deux autres entités qui demande le même calcul (+0.2), alors tu devras dupliquer 2 fois tes 2 scripts, donc au final pour 3 entités tu auras 6 scripts, etc.
Donc on va variabiliser l’opération (+/-), la valeur (X.X) et l’entité cible (entity_id).
En faisant ainsi, pour les 3 entités tu auras 1 seul et unique script.
Le fait d’augmenter/diminuer, la valeur et l’entité seront passés en paramètres.
Voici pour ton cas la réalisation de ce que j’explique :
increment_decrement:
description: "Augmente/diminue l'entité passée en paramètre"
fields: # A partir de là, on 'variabilise'
entity_id:
description: "Indique l'entité à faire évoluer"
example: "input_number.hacf"
operation:
description: "Indique le type d'operation (+/-)"
example: "+"
value:
description: "Indique le nombre à ajouter/diminuer"
example: "1.5"
sequence:
- choose: #ici on utilise une fonction de sélection pour le type d'opération
- alias: "Si <operation> est une addition"
conditions:
- condition: template
value_template: "{{ operation == '+' }}"
sequence:
- service: input_number.set_value
data:
entity_id: "{{entity_id}}" #l'entité cible est ici
value: "{{ ( states(entity_id) | float + value ) | round (2) }}" # l'addition est ici
- alias: "Si <operation> est une soustraction"
conditions:
- condition: template
value_template: "{{ operation == '-' }}"
sequence:
- service: input_number.set_value
data:
entity_id: "{{entity_id}}" #l'entité cible est ici
value: "{{ ( states(entity_id) | float - value ) | round (2) }}" # la soustraction est ici
Et l’appel du script dans un bouton (button) par exemple :
J’imaginais bien une procédure de ce type. Et tu as raison, j’ai déjà quatre input.number à traiter de la sorte. Mais la mise en œuvre m’aurait été impossible au regard de la complexité de ce que tu as écrit.
Il va me falloir plusieurs jours pour l’appliquer et le mettre en œuvre…mais j’y arriverai