Action sur un type: state-badge

Bonjour à tous,

Je patine sur un truc simple pourtant, c’est d’ouvrir le portail avec une automatisation.
J’ai mis un state-badge qui m’affiche l’état du portail (ouvert ou fermé).
image

Quand j’appuie dessus, je veux juste lancer l’automatisation qui lance un on/off sur le relais qui actionne le portable, la commande est la même que le portail soit ouvert ou fermé.

Mais l’état du portail, je le récupère sur binary_sensor.portail_ouvert_ferme et la commande, je la fais sur switch.portail_relais via l’automatisation.
Mais quand j’appuie sur le bouton, j’ai l’historique de binary_sensor.portail_ouvert_ferme mais pas de lancement de commande. (j’ai tenté tap_action et même hold_action) pareil.

Je me trompe où ?

  - type: state-badge
    entity: binary_sensor.portail_ouvert_ferme
    style:
      transform: scale(3,3)
      top: 97%
      left: 4%
      font-size: 12px
      text-align: center
      font-weight: bold
      color: transparent
      hold_action:
        action: call-service
        service: automation.trigger
        service_data: {}
        target:
          entity_id: automation.actionner_le_portail
      tap_action:
        action: call-service
        service: automation.trigger
        service_data: {}
        target:
          entity_id: automation.actionner_le_portail

Merci :kissing_heart:

Pourquoi tu lances pas un service directement avec le state-badge
tu type Commutateur: Turn on

Salut @Sigalou

Je dirai problème d’indentation, tu dois aligner le « tap_action » sur « style » par exemple.

- type: state-badge
  entity: binary_sensor.portail_ouvert_ferme
  style:
    transform: scale(3,3)
    top: 97%
    left: 4%
    font-size: 12px
    text-align: center
    font-weight: bold
    color: transparent
  tap_action:
    action: call-service
    service: automation.trigger
    service_data: {}
    target:
      entity_id: automation.actionner_le_portail    
1 « J'aime »

on peut faire un Turn On qui lance une automatisation ?

C’était tellement évident que je l’avais devant la figure et je cherchais partout ailleurs. :innocent:
Oui, c’est bien cela, tap_action était décalé. C’est nouveau le Yaml pour moi, mais ça vient, je ne ferai plus l’erreur.

Merci de l’avoir vu. :kissing_closed_eyes:

Il faut que je reprenne mon bouton de toutes manières car un state-badge avec un scale, ça ne permet pas d’appuyer sur toute la superficie du bouton. Je vais regarder d’autres cartes.

1 « J'aime »

:face_with_raised_eyebrow: !

Directement non, car on appelle une entité, mais cette entité peut appeler une automation …
Le mieux c’est de faire ‹ service: automation.turn_on ›
Picture éléments assez poussé , mais pas très bien commenté!
La partie " - type: image" peut appeler un gif, a voir pour toi !

PS

J'ai retrouvé le vrai !

sdb humidité

1 « J'aime »

Oui, c’est exactement ce que j’utilise pour mes lumières. C’est très très puissant !!
lumieres_sigalou

Salut @Doubledom, très interessant ce que tu apportes, c’est une logique que je n’ai pas encore acquise et cela m’intéresse de la comprendre.

Donc si je comprends bien, l’objectif est d’arriver à programmer le déclenchement de l’automatisation si je déclenche un Commutateur: Turn on ou un Commutateur: Turn off (l’automatisation est la même) sur mon entité qui donne l’état du portail.

tu me dis :

C’est à quel endroit de l’entité que je définis cela ?

Mon entité est binary_sensor.portail_ouvert_ferme et est héritée d’un ESP sous ESP Home qui me remonte Off quand le portail est fermé et On quand il est ouvert

C’est au niveau du lien entre l’entité et l’automatisation (ou entre l’automatisation et l’entité) que je bloque.
L’objectif est donc d’ouvrir le portail (lancer une automatisation) quand on clique sur le bouton bleu :

service: switch.turn_on
data: {}
target:
  entity_id: binary_sensor.portail_ouvert_ferme

Merci

Salut…
Il y a un truc qui m’échappe !
Pourquoi lancer une automation, pour Ouvrir ou Fermer le Portail, à moins qu’il y ai plein de truc derrière !
Tu as la même cde qui fait un coup Ouvrir l’autre Fermer (Toggle).
Ta cde a bien un « Bp » ou c’est un truc particulier !

Au cas ou tu veux créé un Bouton et en faire 'qqc'

Dans le principe tu passes par la création d’une entité [Entrées] de type Bouton !
image


Donc tu as un « input_bouton.portail » ! à ta disposition , avec lequel tu peux faire ce que tu veux lors de l’action, en appuie court ou long !

Tu récupères le bouton et tu lui donnes l’automation, ici dans une carte bouton

show_name: true
show_icon: true
type: button
tap_action:
  action: call-service
  service: automation.trigger
  target: {}
  data:
    entity_id: automation.actionner_le_portail
    skip_condition: true
entity: input_button.portail
1 « J'aime »

C’est un contact sec qui commande le portail (un ON - pause 500ms - OFF) = mon automatisation

Parce que je dois commander le contact sec qui est piloté par un relais ESP.

J’y suis arrivé.
J’ai suivi ta méthode !!
Je n’ai pas eu besoin de créer une entité car j’avais déja l’entité qui me remonte l’état de mon portail (on ou off) mais même logique.
Ensuite j’ai d’abord testé un type: button, ça a fonctionné et j’ai finalement basculé sur un custom:button-card.

Voici le code final qui fonctionne parfaitement :

type: custom:button-card
show_name: false
tap_action:
  action: call-service
  service: automation.trigger
  service_data:
    entity_id: automation.actionner_le_portail
entity: binary_sensor.portail_ouvert_ferme
state:
  - value: 'off'
    color: gray
  - value: 'on'
    color: red

Merci beaucoup pour ton aide et ta ténacité :grin: :kissing_heart:

Ce genre de truc à mon avis, c’est mieux de le mettre dans l’esp directement (avec esphome), ça évite tous les cas ou ça ‹ plante ›

switch:
- platform: gpio
  name: "Relai portail"
  pin: GPIO12
  id: portillon
  on_turn_on:
    - delay: 0.5s
    - switch.turn_off: portillon

Génial, excellente idée, je n’y avais pas pensé.

Avec Jeedom et ESPEasy, je faisais un
image mais je n’ai pas trouvé la commande à envoyer.

merci @Pulpy-Luke pour le conseil, je mets en dev tout de suite.

Et du coup, au lieu d’envoyer une automatisation, j’ai juste un ON à envoyer.

J’ai donc encore simplifié le bouton, inutile d’aller à l’automatisation

type: custom:button-card
show_name: false
tap_action:
  action: call-service
  service: switch.turn_on
  service_data:
    entity_id: switch.portail_relais
entity: binary_sensor.portail_ouvert_ferme
state:
  - value: 'off'
    color: gray
  - value: 'on'
    color: red

Exactement, pas besoin d’une usine à gaz

1 « J'aime »

Hello @Pulpy-Luke Je reviens sur ton excellente idée d’automatiser le Off 500ms après un On, cela fonctionne parfaitement.
J’ai fait le lien HA => Alexa. J’ai déclaré le portail en « volet », c’est ce qui permet d’envoyer l’ordre « ouvre le portail » ou « ferme le portail ».
Le « ouvre le portail » fonctionne parfaitement, il lance le On et du coup l’esp gère la tempo puis le Off.
Le « ferme le portail » ne fonctionne pas lui, il doit envoyer la commande Off à l’équipement qui est déja en Off.

J’ai innocemment tenté de mettre un :

  on_turn_off:
    - delay: 0.5s
    - switch.turn_on: portillon
    - delay: 0.5s
    - switch.turn_off: portillon

Comme je m’y attendais, cela ne peut fonctionner, le relais claque on/off sans arret, j’ai du rapidement le supprimer.

Tu as une idée de comment je peux faire pour que la commande « Ferme le portail » puisse fonctionner ?

Salut

Carrement pas une bonne idée effectivement, là tu fais une boucle.

Logique… ça ne représente pas l’état de ton portail, juste ta commande

Tu te fais un cover à base de template par exemple, qui utilise ton switch dans ses commandes

Et tu géres l’état ouvert/fermé avec un input_boolean
Il faut ajouter l’inversion de l’état à chaque appel et ça doit rouler

ok, tu me parles chinois à ce stade, mais je vais tout lire et apprendre, merci pour la piste.

Voilà, c’est tout bon, tout compris. Absolument génial et bien pensé.

Voici mon code :

- platform: template
  covers:
    portail:
      device_class: window
      friendly_name: "Portail"
      unique_id: cover.portail
      value_template: "{{ is_state('binary_sensor.portail_ouvert_ferme', 'on') }}"
      open_cover:
        service: switch.turn_on
        target:
            entity_id: switch.portail_relais
      close_cover:
        service: switch.turn_on
        target:
            entity_id: switch.portail_relais
      icon_template: >-
        {% if is_state('binary_sensor.portail_ouvert_ferme', 'on') %}
          mdi:gate-open
        {% else %}
          mdi:gate
        {% endif %}

ça marche du tonnerre !!
Merci @Pulpy-Luke

1 « J'aime »