Ré-initialiser un input_boolean

bonjour

en m’inspirant des nombreux sujet du forum, J’ai crée une carte pour avoir une commande centralisé de mes volets.
J’aurais voulu que cette commande se re-initialise a son état initial âpres l’avoir déclenché.
Mais je n’y parviens pas (je suis plutôt nul en code, malgré de nombreux effort)

J’ai donc crée une input_boolean a l’aide de l’interface UI
en sélectionnant entrée et interrupteur.

input_boolean.commande_ouverture_centralise_volets

J’ai fait une automation (en Yaml) pour « normalement » revenir a l’état initiale (inspirée d’un code de clemalex)
automation que je retrouve bien dans onglet automatisations

- id: 'reset_input_commande_centralise'
  alias: reset input commande centralisé
  mode: parallel #Permet l'appel multiple à cette automatisation
  max: 3 #Le nombre de tes interrupteurs
  trigger:
    - platform: state
      entity_id: input_boolean.commande_ouverture_centralise_volets
      to: 'on'
    - platform: state
      entity_id: input_boolean.commande_pause_centralise_volets
      to: 'on'
    - platform: state
      entity_id: input_boolean.commande_fermeture_centralise_volets
      to: 'on'  
  condition: []
  action:
    - delay: '00:00:01'
    - service: switch.turn_off 
      data:
        entity_id: "{{ trigger.entity_id }}" 

et j’ai fait une carte (toujours inspirée du forum et de @Clemalex :wink:)

type: custom:button-card
name: Fermeture centralisé
aspect_ratio: 4/2
lock:
  enabled:
    - - - return entity.state === 'on';
  duration: 3
  unlock: double_tap
icon: mdi:archive-arrow-down
tap_action:
  action: toggle
entity: input_boolean.commande_fermeture_centralise_volets
show_state: false
show_last_changed: false
color: auto
styles:
  card:
    - background-color: white
    - border-radius: 10%
    - filter: opacity(100%)
    - padding: 2px
    - color: auto
    - text-transform: null
    - font-size: 10px
    - color: purple
    - border: 2px solid var(--primary-color)
    - border-radius: 10px
state:
  - value: 'on'
    styles:
      card:
        - background-color: null
  - value: 'off'
    styles:
      card:
        - background-color: ''
        - filter: opacity(70%)
      icon:
        - color: black
      name:
        - color: black

La commande fonctionne bien, quand j’appuie sur le bouton les volets manœuvrent (Grace a l’automatisation ci dessous)

- id: 'fermeture_centralisé_volets'
  alias: Fermeture centralisé volets
  trigger:
    platform: state
    entity_id: input_boolean.commande_fermeture_centralise_volets
    to: 'on'
  condition: []
  action:
    - data:
        entity_id: cover.volet_v1
      service: cover.close_cover
    - data:
        entity_id: cover.volet_v2
      service: cover.close_cover
    - data:
        entity_id: cover.volet_v3
      service: cover.close_cover
    - delay:
        milliseconds: 500
        seconds: 5
    - data:
        entity_id: cover.volet_v4
      service: cover.close_cover
    - data:
        entity_id: cover.volet_v5
      service: cover.close_cover

Mon problème est le suivant :
Quand j’appuie sur le bouton, celui ci passe en jaune (ON) et la manœuvre des volets commence.
Mais il ne revient pas automatiquement, il reste en ON et je suis donc obligé de le faire manuellement

J’ai donc besoin de votre aide pour résoudre ce problème
Je vous rappelle que je suis nul en code (je comprend pas toujours tous, même avec la doc.), désolé si mon problème vous parait stupide.
Je vous cache pas qu’un solution simple a mettre en œuvre serait un plus :grin:

Merci a tous pour votre aide

1 « J'aime »

Bonsoir,

Je vois rapidement deux manières (il y en a certainement plus) de traiter le sujet avec peu de modification.

La première idée simple consisterait à remplacer tout simplement votre automation par un script comportant les mêmes éléments « action » et d’appeler ce script via votre carte en modifiant le « tap-action » de cette manière

`tap_action:
  action: call-service
      service: script.turn_on
      service_data: {}
      target:
        entity_id: non_de_votre_script

La seconde idée et que depuis la version 2022.2.x (du 2 février) de HA, créer une entité « input_button » et mettre dans votre automation le déclencheur suivant:

trigger:
    platform: state
    entity_id: input_bouton.nom_du_bouton
    to: 

Attention to: n’est pas une erreur, c’est pour indiquer « à chaque changement d’état »

Voila je pense cela pourra peut-être vous aider

Cordialement
mcp

1 « J'aime »

Bonjour,

tu n’aurais pas par hasard un capteur de butée haut et bas qui indiquerait a HA si ton volet est bien arrivé
dans ce cas, tu pourrais faire une automatisation qui remet ton bouton à off si le volet est bien a destination…

Stéphane

Le volet est seulement équipé de fin de course monté et descente qui coupe l’alimentation moteur.
Mais il ne sont pas récupérable dans HA

Je vais installer cette version et faire un test, car je n’avais pas « bouton » dans le choix des entrées.

Pour le script « idée simple » peut vite devenir compliqué pour moi, mais je ferais un essai si la solution bouton ne convient pas.

Et ajouter ceci à ton automatisation (à la fin)?

- id: 'fermeture_centralisé_volets'
  alias: Fermeture centralisé volets
  trigger:
    platform: state
    entity_id: input_boolean.commande_fermeture_centralise_volets
    to: 'on'
  condition: []
  action:
    - data:
        entity_id: cover.volet_v1
      service: cover.close_cover
    - data:
        entity_id: cover.volet_v2
      service: cover.close_cover
    - data:
        entity_id: cover.volet_v3
      service: cover.close_cover
    - delay:
        milliseconds: 500
        seconds: 5
    - data:
        entity_id: cover.volet_v4
      service: cover.close_cover
    - data:
        entity_id: cover.volet_v5
      service: cover.close_cover
#### en dessous 
    - data:
        entity_id: input_boolean.commande_fermeture_centralise_volets
      service: input_boolean.turn_off

Je vais tester et je vous tiens informé
Merci pour votre aide

édit : Je pense avoir trouvé :face_with_head_bandage:, j’ai la tête comme une pastèque !
Je met sa au propre demain, je test et je post mon résultat. :sweat_smile:

Bonne soirée a tous, a demain.

Ils sont pas implanté il y à pas longtemps la fonction bouton justement ? Qui permet au bouton de pas garder son état au clique ???

=> https://www.home-assistant.io/blog/2021/12/11/release-202112/#the-button-entity

Bonjour

Voici ce que j’ai réussi a faire grâce a votre aide.

J’ai supprimé l’automatisation pour réinitialisé les commandes.(inutile)

J’ai crée trois input boolean (switch) avec l’interface UI pour les fonctions ouvrir, pause, fermer

J’ai crée une carte « custom:button-card » pour ouvrir, une pour fermer et une pour pause suivant le modèle ci dessous.

type: custom:button-card
lock:
  enabled:
    - - - return entity.state === 'on';
  duration: 3
  unlock: double_tap
name: Fermeture centralisé
aspect_ratio: 4/2
icon: mdi:archive-arrow-down
tap_action:
  action: toggle
entity: input_boolean.commande_fermeture_central_volets
show_state: true
show_last_changed: false
color: auto
styles:
  card:
    - background-color: white
    - border-radius: 10%
    - filter: opacity(100%)
    - padding: 2px
    - color: auto
    - text-transform: null
    - font-size: 10px
    - color: purple
    - border: 2px solid var(--primary-color)
    - border-radius: 10px

voici le résultat de la carte
carte bouton centralise

J’ai crée une automatisation pour ouvrir, une pour pause et une pour fermer suivant le modèle ci dessous

- id: 'fermeture_central_volets'
  alias: Fermeture centralisé volets
  trigger:
    platform: state
    entity_id: input_boolean.commande_fermeture_central_volets
    to: 
  condition: []
  action:
    - service: cover.close_cover
      target:
        entity_id: cover.volet_v1_fictif
    - service: cover.close_cover
      target:
        entity_id: cover.volet_v2_fictif
    - service: cover.close_cover
      target:
        entity_id: cover.volet_v3_fictif
    - service: cover.close_cover
      target:
        entity_id: cover.volet_v4_fictif
    - service: cover.close_cover
      target:
        entity_id: cover.volet_v5_fictif
#     reset commande fermeture  
    - service: input_boolean.turn_off
      target:
        entity_id: input_boolean.commande_fermeture_central_volets

Le tous m’a donné le résultat voulu.
lors de l’appui (après déverrouillage du bouton) sur une des commandes,celle ci exécute la commande et revient a son état original (comme un bouton poussoir)

J’ai toutefois voulu essayé avec la fonction « input_button »
Mais je n’ai pas réussi a avoir le résultat voulu.Je vais essayer de m’expliquer.

J’ai crée Trois input_button pour ouvrir, pause et fermer mais en Yaml, car je n’ai pas l’option bouton en passant par l’interface UI.

J’ai crée trois carte button de base pour chaque commande et cela fonctionne.

type: button
tap_action:
  action: toggle
entity: input_button.fermeture_centralise_volets

mais quand je veux utiliser custom:button-card (voir code ci-dessus) en remplaçant l’entity Input_boolean par mon input_button la commande refuse de s’exécuter

J’ai le message suivant : Échec du service « input_button turn_off : service not found »
j’ai utilisé l’automatisation ci dessous pour faire mes essais (qui est la même sans la fonction « reset commande »)

- id: 'fermeture_central_store'
  alias: Fermeture centralisé store
  trigger:
    platform: state
    entity_id: input_button.fermeture_centralise_volets
    to: 
  condition: []
  action:
    - service: cover.close_cover
      target:
        entity_id: cover.store_v0_fictif

Salut.

Pour ta card button, l’entity cible c’est forcement un truc de tap_action… et pas un truc de button comme là.
Et perso pour l’automatisation, je ferai un service qui appelle un group avec les 4 volets dedans, c’est moins séquentiel que 4 services l’un à la suite de l’autre

merci pulpy, mais du coup le truc a faire pour que sa fonctionne c’est quoi ?

Je comprends ce que tu veux dire, mais c’est encore un truc tous nouveau pour moi, je vais y regarder pour trouver des exemples de mise en place pour « group » .
J’ai donc opté pour le moment par une solution a ma portée qui je sais est loin d’être parfaite…

Regarde la doc :

On y voit comment simuler un appui

- service: input_button.press
  target:
    entity_id: input_button.my_button

Donc ton tap_action doit faire l’appel du service comme au dessus

      tap_action:
        action: call-service
        service: input_button.press
        service_data:
          entity_id: input_button.my_button

Et du coup, quitte à faire lancer un service (et si l’automatisation ne sert que là), autant lancer le service sur les volets directement (idéalement le group). On « économise » tout le timing de déclenchement de l’automatisation + la remise à zéro du input_boolean qui sert à rien
On passe de ça

  • Bouton → Input_boolean → trigger → automation → monter → volet1 puis volet2 …
    à
  • Bouton → service → trigger → automation → monter → volet1 puis volet2 …
    puis
  • Bouton → service → monter → volet1 + volet2 …

Donc si j’ai bien compris pour le input button je modifie le code de la carte comme ci dessous ?
Je n’ai pas besoin de toucher automatisation ?

type: custom:button-card
lock:
  enabled:
    - - - return entity.state === 'on';
  duration: 3
  unlock: double_tap
name: Fermeture centralisé
aspect_ratio: 4/2
icon: mdi:archive-arrow-down
tap_action:
  action: call-service
  service: input_button.press
  service_data:
    entity_id: input_button.fermeture_centralise_volets
show_state: true
show_last_changed: false
color: auto
styles:
  card:
    - background-color: white
    - border-radius: 10%
    - filter: opacity(100%)
    - padding: 2px
    - color: auto
    - text-transform: null
    - font-size: 10px
    - color: purple
    - border: 2px solid var(--primary-color)
    - border-radius: 10px

Pour la fonction group je vais voir après (un problème l’un après l’autre…sinon :face_with_head_bandage:)

Oui et il faut aussi changer le trigger de l’automatisation

pour automatisation je retire uniquement la ligne to: (c’est ce que j’ai vu ou compris sur la doc)
ou faut aussi rajouter autre chose.

- id: 'fermeture_central_store'
  alias: Fermeture centralisé store
  trigger:
    platform: state
    entity_id: input_button.fermeture_centralise_volets
  condition: []
  action:
    - service: cover.close_cover
      target:
        entity_id: cover.store_v0_fictif
1 « J'aime »

Et pour les groupes la doc est là

Pour les groupes c’est bon, j’ai réussi a crée le groupe. (en yaml, je n’ai pas trouvé pour le faire avec interface UI)
ce qui me donne l’automatisation suivante

# Commande fermeture centralisation volets roulant
- id: 'fermeture_central_volets'
  alias: Fermeture centralisé volets
  trigger:
    platform: state
    entity_id: input_boolean.commande_fermeture_central_volets
    to: 
  condition: []
  action: 
    - service: cover.close_cover
      target:
        entity_id: group.volets_centralisation

#     reset commande fermeture  
    - service: input_boolean.turn_off
      target:
        entity_id: input_boolean.commande_fermeture_central_volets

Je ne parviens pas a faire fonctionner l’automatisation avec Input_button dans la custom card

je reussis a le faire avec un le bouton simple ci dessous

type: button
tap_action:
  action: toggle
entity: input_button.fermeture_centralise_store

Mais je n’y arrive pas la custom:button-card ci dessous

type: custom:button-card
lock:
  enabled:
    - - - return entity.state === 'on';
  duration: 3
  unlock: double_tap
name: Fermeture centralisé
aspect_ratio: 4/2
icon: mdi:archive-arrow-down
tap_action:
  action: call-service
  service: input_button.press
  service_data:
    entity_id: input_button.fermeture_centralise_store
show_state: false
show_last_changed: false

Edit : Alors c’est a n’y rien comprendre…le même code fonctionne maintenant… :upside_down_face:

automatisation, crée avec UI (ci dessous)


alias: fermeture central Store
description: ''
trigger:
  - platform: state
    entity_id: input_button.fermeture_centralise_store
condition: []
action:
  - service: cover.close_cover
    data: {}
    target:
      entity_id: cover.store_v0_fictif
mode: single

Le premier cas mache mais c’est un coup de bol … toggle c’est pas un service de input_button
image

Quant au deuxième, il faut voir le message d’erreur…moi ça fonctionne (36 → 40)
button

type: custom:button-card
icon: mdi:bell
tap_action:
  action: call-service
  service: input_button.press
  service_data:
    entity_id: input_button.ring_bell