Problème pour nommer les custom-button

Bonjour,

J’ai besoin de votre aide pour configurer mon ballon d’eau chaude. J’ai créé 4 custom button pour programmer jusqu’à 4 douches. Par exemple, si je clique sur 2, le bouton va changer de couleur en orange et le chauffe eau va tourner.

Une fois les deux douches prêtes, l’entité « binary_sensor.ariston_is_heating » passe à off.

Voici ma configuration qui fonctionne pour l’instant :

Ariston1

type: horizontal-stack
    cards:
      - type: custom:button-card
        entity: number.ariston_requested_number_of_showers
        name: 1
        state:
          - value: '1'
            styles:
              card:
                - background-color: orange
        tap_action:
          action: call-service
          service: script.set_shower_and_mode1
      - type: custom:button-card
        entity: number.ariston_requested_number_of_showers
        name: 2
        state:
          - value: '2'
            styles:
              card:
                - background-color: orange
        tap_action:
          action: call-service
          service: script.set_shower_and_mode2
      - type: custom:button-card
        entity: number.ariston_requested_number_of_showers
        name: 3
        state:
          - value: '3'
            styles:
              card:
                - background-color: orange
        tap_action:
          action: call-service
          service: script.set_shower_and_mode3
      - type: custom:button-card
        entity: number.ariston_requested_number_of_showers
        name: 4
        state:
          - value: '4'
            styles:
              card:
                - background-color: orange
        tap_action:
          action: call-service
          service: script.set_shower_and_mode4

Par contre, je rencontre un problème. Le bouton qui reste allumé en Orange reste toujours en orange. Je veux qu’ils s’éteignent dès que l’entité « binary_sensor.ariston_is_heating » passe à Off.

Pour ça, j’ai essayé un « automation ». Mais je ne sais pas comment je peux nommer ces 4 boutons.

Voici mon automation qui ne fonctionne pas (C’est normal, switch.ariston_button_x n’existe pas). Mais je ne sais pas comment faire pour contrôler ces boutons :

alias: Ballon_Button_Turnoff
description: ""
trigger:
  - platform: state
    entity_id:
      - binary_sensor.ariston_is_heating
    to: "off"
condition: []
action:
  - service: switch.turn_off
    metadata: {}
    data: {}
    target:
      entity_id:
        - switch.ariston_button_1
        - switch.ariston_button_2
        - switch.ariston_button_3
        - switch.ariston_button_4
mode: single

J’ai tout essayé. Mais j’arrive pas. Merci pour votre aide.

Salut @riyas1980

tu devrais prendre le temps de relire la doc de « button-card ».

Là, tu bases le style sur l’état de l’entité de base, donc sur la première carte :

number.ariston_requested_number_of_showers

Bref ce que tu veux faire devrais plus se rapprocher de ça :

type: horizontal-stack
cards:
  - type: custom:button-card
    entity: number.ariston_requested_number_of_showers
    name: 1
    styles:
      card:
        - background-color: |
            [[[
              if (states['binary_sensor.ariston_is_heating'].state == 'on') return 'orange';       
            ]]] 

Merci pour ton retour @Herbs

J’avoue je ne suis pas un spécialiste de Yaml. J’essaye d’apprendre. J’ai appliqué ta méthode. Mais le souci que je rencontre c’est que maintenant les 4 boutons sont allumés en orange peu importe le nombre de douche demandé. Avant je n’avais que le bouton que j’avais sélectionné qui était allumé. Tu sais s’il est possible d’allumer que le bouton qu’on presse ?
Ariston2

Pour savoir si les boutons seront revenus à l’état normal, je le saurai demain matin. Pour l’instant c’est en cours de chauffe.

Merci

Salut @riyas1980

Ce sont bien les scripts que tu appelles qui « set » l’état de number.ariston_requested_number_of_showers ?

Oui c’est bien ça. Voici un des script :

alias: set_shower_and_mode1
sequence:
  - service: number.set_value
    data:
      value: "1"
    target:
      entity_id: number.ariston_requested_number_of_showers
  - service: select.select_option
    data:
      entity_id: select.ariston_operation_mode
      option: MANUAL
mode: single

Et pour info, grâce à toi, les boutons sont bien revenus à l’état normal après la chauffe. Il faut juste régler pour que seul le bouton que je presse s’allume mais pas tous. Merci

Ok,

Donc finalement ton code d’origine n’était peut-être pas si mal :wink:

Manque juste une automation qui passe le number à « 0 » quand binary_sensor.ariston_is_heating passe à « off ».

Du style :

alias: Ballon_Button_Turnoff
description: ""
trigger:
  - platform: state
    entity_id:
      - binary_sensor.ariston_is_heating
    to: "off"
condition: []
action:
  - service: number.set_value
    data:
      value: "0"
    target:
      entity_id: number.ariston_requested_number_of_showers
mode: single   

Merci beaucoup @Herbs

Tout fonctionne parfaitement avec cette automation. J’ai cherché plein de chose mais pas cette solution de 0 douche. C’est super. Merci encore :slight_smile:

1 « J'aime »

De rien, nickel si ça fonctionne :wink:

Bon, j’ai parlé trop vite. :slight_smile: Le bouton s’est éteint complètement. Mais au bout d’une minute, ca change à une douche sans aucune action de ma part.

Ariston requested number of showers changed to 1
11:32:39 AM - 14 minutes ago
Ariston requested number of showers changed to 0 triggered by automation Ballon_Button_Turnoff triggered by state of En cours de Chauffe
11:31:39 AM - 15 minutes ago
Ariston requested number of showers changed to 2 triggered by service Script: set_shower_and_mode2
11:30:46 AM - 16 minutes ago - Riyas

Ce n’est pas un automation ou un bouton qui a déchenché ça. Je me demande si on a le droit de mettre à 0 le nombre de douche.

Je pense que si

Au pire pour confirmer ça tu peux demander à l’automation de le passer à un nombre bidon genre 10.

[EDIT] ton number.ariston_requested_number_of_showers il vient d’une intégration en particulier ?

Si c’est le cas, possible que tu ne puisses pas le mettre à 0.

J’ai essayé de mettre 10 et j’ai ce message d’erreur :

Value 10.0 for number.ariston_requested_number_of_showers is outside valid range 0 - 4

Si je comprends bien, 0 est possible. Mais une minute après, il repasse à 1 douche tout seul. Incompréhensible

Une solution un peu « tricky » à proposer :

Tu crées 4 « helpers » de type input_boolean :

input_boolean.shower_one
input_boolean.shower_two
input_boolean.shower_three
input_boolean.shower_four

Tu modifies tes scripts (en adaptant pour chaque cas) :

alias: set_shower_and_mode1
sequence:
  - service: input_boolean.turn_on
    target:
      entity_id: input_boolean.shower_one
  - service: number.set_value
    data:
      value: "1"
    target:
      entity_id: number.ariston_requested_number_of_showers
  - service: select.select_option
    data:
      entity_id: select.ariston_operation_mode
      option: MANUAL
mode: single

Tu modifies l’automation qui passait ton number à zéro comme ça :

alias: Ballon_Button_Turnoff
description: ""
trigger:
  - platform: state
    entity_id:
      - binary_sensor.ariston_is_heating
    to: "off"
condition: []
action:
  - choose:
    - conditions: "{{ is_state('input_boolean.shower_one', 'on') }}"
      sequence: 
        - service: input_boolean.turn_off
          target:
            entity_id: input_boolean.shower_one
    - conditions: "{{ is_state('input_boolean.shower_two', 'on') }}"
      sequence: 
        - service: input_boolean.turn_off
          target:
            entity_id: input_boolean.shower_two 
    - conditions: "{{ is_state('input_boolean.shower_three', 'on') }}"
      sequence: 
        - service: input_boolean.turn_off
          target:
            entity_id: input_boolean.shower_three
    - conditions: "{{ is_state('input_boolean.shower_four', 'on') }}"
      sequence: 
        - service: input_boolean.turn_off
          target:
            entity_id: input_boolean.shower_four
    default: []                                      
mode: single

Et tu reviens sur le code de carte que je t’avais proposé, aves les nouveaux input_boolean :

type: horizontal-stack
cards:
  - type: custom:button-card
    entity: number.ariston_requested_number_of_showers
    name: 1
    styles:
      card:
        - background-color: |
            [[[
              if (states['input_boolean.shower_one'].state == 'on') return 'orange';       
            ]]] 

Merci pour ton aide. J’ai créé les input boolean. J’ai fait tout comme tu as dit. J’ai un nouveau problème. Si j’appuie sur bouton 3 puis bouton 2, les 2 sont allumés en orange. Alors qu’avant avec mon ancien code, seul le dernier resté allumé.

Voici mon code modifié :

type: vertical-stack
cards:
  - type: horizontal-stack
    cards:
      - type: custom:button-card
    entity: number.ariston_requested_number_of_showers
    name: 1
    styles:
      card:
        - background-color: |
            [[[
              if (states['input_boolean.shower_one'].state == 'on') return 'orange';       
            ]]]
	tap_action:
          action: call-service
          service: script.set_shower_and_mode11
  - type: custom:button-card
    entity: number.ariston_requested_number_of_showers
    name: 2
    styles:
      card:
        - background-color: |
            [[[
              if (states['input_boolean.shower_two'].state == 'on') return 'orange';       
            ]]]
	tap_action:
          action: call-service
          service: script.set_shower_and_mode22
  - type: custom:button-card
    entity: number.ariston_requested_number_of_showers
    name: 3
    styles:
      card:
        - background-color: |
            [[[
              if (states['input_boolean.shower_three'].state == 'on') return 'orange';       
            ]]]
	tap_action:
          action: call-service
          service: script.set_shower_and_mode33
  - type: custom:button-card
    entity: number.ariston_requested_number_of_showers
    name: 4
    styles:
      card:
        - background-color: |
            [[[
              if (states['input_boolean.shower_four'].state == 'on') return 'orange';       
            ]]]
	tap_action:
          action: call-service
          service: script.set_shower_and_mode44

Pour info, j’ai dupliqué les scripts. C’est pour ça que les noms sont différents

Tu penses faire ce genre de manip régulièrement ou tu fais juste des tests pour voir ?

Si oui, faudrait « turn_off » les autres boolean un peu comme ça :

alias: set_shower_and_mode1
sequence:
  - service: input_boolean.turn_off
    target:
      entity_id: 
        - input_boolean.shower_two
        - input_boolean.shower_three
        - input_boolean.shower_four
  - service: input_boolean.turn_on
    target:
      entity_id: input_boolean.shower_one
  - service: number.set_value
    data:
      value: "1"
    target:
      entity_id: number.ariston_requested_number_of_showers
  - service: select.select_option
    data:
      entity_id: select.ariston_operation_mode
      option: MANUAL
mode: single

Moi je fais pas ce genre de manip. Mais ma femme risque de le faire. Comme je veux une solution WAF Friendly, je voulais que tout soit parfait.

Et grâce à toi, c’est bon. Tout tourne nickel. Tu es trop fort. Merci encore pour ton aide :slight_smile:

Ok, je comprends :smiley:

N’exagérons rien :wink:

Avec le temps et en montant en compétence, tu trouveras peut-être une meilleure solution :wink:

Là on vient de mettre au point un « poc », il y’a surement plus « propre » à faire :stuck_out_tongue:

1 « J'aime »