Incrémentation Entrée type "Nombre"

Bonjour @ tous,

Je suis totalement novice et je m’arrache les cheveux depuis maintenant 3h à tenter une chose.

Je tente de modifier la valeur d’une entrée de type « Nombre » grâce à une automatisation, cette automatisation se déclenche sur modification de l’état d’entrées de type « Interrupteur », une fois déclenché l’automatisation utilise un bloc « Si-Alors » pour vérifier l’état de 10 entrées de type « Interrupteur ».

C’est là que je ne comprend pas comment faire (j’ai trouvé comment incrémenté/décrémenté/définir une valeur), mais en effet je souhaiterai ajouter une valeur à l’entrée de type « Nombre » différente suivant quel bouton est activés.

Exemple
Interrupteur 1 ajouterai la valeur 2
Interrupteur 2 ajouterai la valeur 4

Au déclenchement de 1 ou 2 je souhaiterai ceci:
Si 1 est activé seul Nombre prend la valeur 2
Si 2 est activé seul Nombre prend la valeur 4
Si 1 et 2 sont activés Nombre prend la valeur 6 (soit 2+4)

Je ne sait pas si j’ai été assez clair, n’hésitez pas m’éclaircir les idées si jamais c’est incompréhensible.

Merci d’avance

Bonjour,
Est-ce que tu ne pourrais pas faire un template avec:

  • un booleén qui donnerait 0 ou 1 pour chaque interrupteur (booléen 1 et booléen 2 dans ton exemple)
  • un template « Nombre » qui prendrait la valeur de (booléen 1 * 2 + booléen 2 * 4). Dans ce cas, le template serait à 0, 2, 4 ou 6 en fonction des deux interrupeurs
    Une idée comme une autre… à tester
1 « J'aime »

Tout d’abord merci de ton aide.

Je débute mais si je comprend bien je crée un Template pour chaque interrupteur comme ceci:

{{is_state('input_boolean.roborock_sam', 'on') | abs}}

Qui me donne une valeur à 1 si l’interrupteur SàM et activé

Et je créer un second Template qui calcule une somme:

(Template SàM * 2) + (Template Salon * 4) + (Template Cuisine * 8) + etc…

J’ai bon? Ou il y a moyen de faire ça en un seul Template?

Encore merci

Je pense qu’il est plus simple de séparer. Tu pourrais faire un seul template en utilisant de if, then, else, mais j’ai peur que la formule devienne très longue.

Salut,

Un truc simple :

  • Créer un groupe avec les entités dans l’ordre de ‹ poids › du plus fort au plus faible
    group:
      myinputs:
        name: "Tous mes inputs"
        entities:
          - input_boolean.activation_chauffage
          - input_boolean.poubelle_menagere_periode
          - input_boolean.arrosage_manuel
    
    
  • a partir de là, on peux lancer un calcul (concatenation des valeurs, transformation en 0/1, convertion binaire décimale…
    {{ expand('group.myinputs')|map(attribute="state")|join('')|replace('off',0)|replace('on',1) | int(value,2) }}
    

Si on décompose pour l’exemple

2 « J'aime »

Bonjour,

Merci, j’ai tester et cela fonctionne!

Mais l’idée du Template est plus simple à mettre en place car elle se suffit à elle-même:

{{
(is_state('input_boolean.roborock_sam','on')|abs * 2)
+ 
(is_state('input_boolean.roborock_salon','on')|abs * 4)
+ 
(is_state('input_boolean.roborock_cuisine','on')|abs * 8)
+ 
(is_state('input_boolean.roborock_entree','on')|abs * 16)
+ 
(is_state('input_boolean.roborock_couloir','on')|abs * 32)
+ 
(is_state('input_boolean.roborock_sdb','on')|abs * 64)
+ 
(is_state('input_boolean.roborock_parents','on')|abs * 128)
+ 
(is_state('input_boolean.roborock_evan','on')|abs * 256)
+ 
(is_state('input_boolean.roborock_bureau','on')|abs * 512)
+ 
(is_state('input_boolean.roborock_maé','on')|abs * 1024)
}}

J’ai donc mon compteur, j’aimerai savoir si certaine commande numérique peuvent étre remplacer par des calculs dans les automatisation?
Exemple

if:
  - condition: state
    entity_id: sensor.compteur
    state: "2"
then:
  - service: vacuum.send_command
    data:
      command: app_segment_clean
      params:
        - segments:
            - 16
          repeat: 1
    target:
      entity_id: vacuum.roborock_s5_max

Est il possible de remplacé le « 16 » dans « segments » par un calcul qui me renverrai 0 ou 16 suivant l’état d’un interrupteur?

Encore merci de votre aide.