Bonjour,
Bonne et heureuse année à vous tous que Home Assistant vous apporte de nouvelles aides dans votre vie de 2025 ![]()
Mon problème
J’ai utilisé une ancienne télécommande Nice 2 boutons reliée à un ESP32 que je pilote via un script ESPHome. Ça fonctionne à merveille, et j’ai donc 2 switch possible :
- switch.portail_pieton
- switch.portail_voiture
Maintenant, je souhaiterais intégrer ces 2 switchs dans un dashboard lovelace de ce type :
avec ce fonctionnement :
- Je clique sur le bouton
Ouverture piéton - l’information secondaire passe de
FerméàEn mouvementet le switch ESPHomeswitch.portail_pietonest activé (dans ESPHome, il bascule de off à on durant 3s pour éviter de rester trop longtemps « appuyé » sur le bouton de la télécommande) - L’appui sur le bouton de la télécommande va ouvrir le portail. cette ouverture dure un certain temps
<temps_ouverture_portail> - Un tempo de
<temps_ouverture_portail>bloque l’appui sur ces 2 boutonsOuverture piétonetOuverture voiture - Après ce
<temps_ouverture_portail>, l’information secondaire passe deEn mouvementàOuvert
Et inversement pour la fermeture :
- Je clique sur le bouton
Ouverture piéton - l’information secondaire passe de
OuvertàEn mouvement - Un tempo de
<temps_ouverture_portail>bloque l’appui sur ces 2 boutonsOuverture piétonetOuverture voiture - Après ce
<temps_ouverture_portail>, l’information secondaire passe deEn mouvementàFermé
Comment faire pour associer le clic du bouton Ouverture piéton à un script qui :
- inactiverait les 2 boutons durant
<temps_ouverture_portail> - déclencherait le
switch.portail_pieton - changerait les options de l’input select
portail_pieton_state
L’état actuel de ce que j’ai pu faire
ESPHome
Voici le code de l'ESP qui pilote la télécommande :
# Module Definition
switch:
- platform: gpio
pin: 26
id: relay_pieton
inverted: True
interlock: [relay_voiture]
name: "Portail piéton"
icon: "mdi:gate"
on_turn_on:
- delay: 3000ms
- switch.turn_off: relay_pieton
- platform: gpio
pin: 25
id: relay_voiture
inverted: True
interlock: [relay_pieton]
name: "Portail voiture"
icon: "mdi:gate"
on_turn_on:
- delay: 3000ms
- switch.turn_off: relay_voiture
Ces 2 switchs me permette de piloter le portail via la page ESPHome :
Lovelace
J’ai créé deux input select pour les états des ouvertures piéton et voiture (voici celui de l’ouverture piéton) :
J’ai créé 2 scripts qui permettent de passer d’un état à un autre et d’actionner le « bouton de la télécommande » via switch.portail_xxxxxx :
Gestion portail piéton
alias: Gestion portail piéton
sequence:
- choose:
- conditions:
- condition: state
entity_id: input_select.portail_pieton_state
state: closed
sequence:
- action: input_select.select_option
metadata: {}
data:
option: moving
target:
entity_id: input_select.portail_pieton_state
- action: switch.toggle
metadata: {}
data: {}
target:
entity_id: switch.portail_pieton
- delay:
hours: 0
minutes: 0
seconds: 25
milliseconds: 0
- action: input_select.select_option
metadata: {}
data:
option: opened
target:
entity_id: input_select.portail_pieton_state
- conditions:
- condition: state
entity_id: input_select.portail_pieton_state
state: opened
sequence:
- action: input_select.select_option
metadata: {}
data:
option: moving
target:
entity_id: input_select.portail_pieton_state
- action: switch.toggle
metadata: {}
data: {}
target:
entity_id: switch.portail_pieton
- delay:
hours: 0
minutes: 0
seconds: 30
milliseconds: 0
- action: input_select.select_option
metadata: {}
data:
option: closed
target:
entity_id: input_select.portail_pieton_state
description: ""
Gestion portail voiture
alias: Gestion portail voiture
sequence:
- choose:
- conditions:
- condition: state
entity_id: input_select.portail_voiture_state
state: closed
sequence:
- action: input_select.select_option
metadata: {}
data:
option: moving
target:
entity_id: input_select.portail_voiture_state
- action: switch.toggle
metadata: {}
data: {}
target:
entity_id: switch.portail_voiture
- delay:
hours: 0
minutes: 0
seconds: 36
milliseconds: 0
- action: input_select.select_option
metadata: {}
data:
option: opened
target:
entity_id: input_select.portail_voiture_state
- conditions:
- condition: state
entity_id: input_select.portail_voiture_state
state: opened
sequence:
- action: input_select.select_option
metadata: {}
data:
option: moving
target:
entity_id: input_select.portail_voiture_state
- action: switch.toggle
metadata: {}
data: {}
target:
entity_id: switch.portail_voiture
- delay:
hours: 0
minutes: 0
seconds: 36
milliseconds: 0
- action: input_select.select_option
metadata: {}
data:
option: closed
target:
entity_id: input_select.portail_voiture_state
description: ""
Et mon code de la carte qui contient les boutons :
code carte lovelace
type: conditional
conditions: []
card:
type: horizontal-stack
cards:
- type: custom:mushroom-template-card
primary: Ouverture Piéton
secondary: |-
{% if is_state('input_select.portail_pieton_state', 'closed') %}
Fermé
{% elif is_state('input_select.portail_pieton_state', 'moving') %}
En mouvement
{% elif is_state('input_select.portail_pieton_state', 'opened') %}
Ouvert
{% endif %}
icon: |-
{% if is_state('input_select.portail_pieton_state', 'closed') %}
mdi:power-on
{% elif is_state('input_select.portail_pieton_state', 'moving') %}
mdi:power-cycle
{% elif is_state('input_select.portail_pieton_state', 'opened') %}
mdi:power-off
{% endif %}
icon_color: |-
{% if is_state('input_select.portail_pieton_state', 'closed') %}
green
{% elif is_state('input_select.portail_pieton_state', 'moving') %}
grey
{% elif is_state('input_select.portail_pieton_state', 'opened') %}
red
{% endif %}
tap_action:
action: perform-action
perform_action: script.gestion_portail_pieton
target: {}
- type: custom:mushroom-template-card
primary: Ouverture voiture
secondary: |-
{% if is_state('input_select.portail_voiture_state', 'closed') %}
Fermé
{% elif is_state('input_select.portail_voiture_state', 'moving') %}
En mouvement
{% elif is_state('input_select.portail_voiture_state', 'opened') %}
Ouvert
{% endif %}
icon: |-
{% if is_state('input_select.portail_voiture_state', 'closed') %}
mdi:power-on
{% elif is_state('input_select.portail_voiture_state', 'moving') %}
mdi:power-cycle
{% elif is_state('input_select.portail_voiture_state', 'opened') %}
mdi:power-off
{% endif %}
tap_action:
action: perform-action
perform_action: script.gestion_portail_voiture
target: {}
icon_color: |-
{% if is_state('input_select.portail_voiture_state', 'closed') %}
green
{% elif is_state('input_select.portail_voiture_state', 'moving') %}
grey
{% elif is_state('input_select.portail_voiture_state', 'opened') %}
red
{% endif %}
En cliquant sur le bouton Ouverture Piéton, je vois bien le bouton Ouverture Piéton évoluer comme prévu et le portail s’ouvre bien.
Par contre je n’arrive pas à « bloquer » un nouvel appui sur le même ou l’autre bouton pendant le délai d’ouverture du portail.
Des idées
?





