Transformation switch -> relais en poussoir

Bonjour,

Bonjour,
Je viens de tester cette solution pour ma configuration et j’avoue qu’en respectant la procédure, je ne parviens pas à trouver mon erreur .
Je possède un boitier relais IP à 8 sorties de chez KMTronic que j’ai put intégrer à HA , sur les 8 relais dispos qui fonctionnent actuellement en switch ON/OFF, je voudrais en consacrer 4 comme des boutons poussoirs . Je ne parle pas de l’icone mais du comportement, exemple, je bascule le switch 1 sur ON, le relais 1 colle et le switch revient aussitot à sa position initial et le relais 1 se décolle .
Le but est d’utiliser les 4 premiers relais commandes par impulsion ( portail, porte de garage et montée volets roulants, descente volets roulants) .
J’ai pris l’explication détaillée de #Clemalex en test en changeant les « entity » mais les relais commutent bien et la tempo ne fonctionne pas . J’obtiens la copie d’écran suivante .

J’ai lancé une réponse sur un sujet : Bouton poussoir - #24 par samourai47 qui parle de cette configuration mais je me suis rendu compte que le sujet datait d’un an .

J’ai intégré ça dans mon fichier automations.yaml .

input_datetime:
  desactivation_automatique_temps:
    name: Temporisation avant désactivation des interrupteurs
    has_date: false
    has_time: true

automation:
  - id: 'desactivation_automatique_automatisation' #identifiant unique
    alias: desactivation_automatique_automatisation # Nom présent dans l'interface Lovelace
    mode: parallel #Permet l'appel multiple à cette automatisation
    max: 3 #Le nombre de tes interrupteurs
    trigger: #Défintion des déclencheurs
    
      ###############################################################
    - platform: state #Surveillance de l'état
      entity_id: switch.controller_192_168_1_60_relay_1 #Entité à surveiller
      to: 'on' #Déclenché l'automation si l'entité passe à cet état
      ################################################################
      
      ################################################################
    - platform: state
      entity_id: switch.controller_192_168_1_60_relay_2
      to: 'on'
      ################################################################
      
      ################################################################
    - platform: state
      entity_id: switch.controller_192_168_1_60_relay_3
      to: 'on'
      ################################################################
      
    condition: [] #Pas de conditions dans ton cas
    action:
        ###################################################################################################
        ## Temporisation suivant l'état de l'entité input_datetime.desactivation_automatique_temps
        ## Si tu veux, tu peux coder en 'dure' le delai (https://www.home-assistant.io/docs/scripts/#delay)
      - delay: "{{ states('input_datetime.desactivation_automatique_temps') }}"
        ###################################################################################################
      
        #############################################
        ## Utilisation de la fonction 'choose' (https://www.home-assistant.io/docs/scripts/#choose-a-group-of-actions)
      - choose:
          - conditions: #Premiere condition vérifiéee
              #interrupteur_01
              - condition: state
                entity_id: switch.controller_192_168_1_60_relay_1
                state: "on"
            sequence:
              - service: switch.turn_off
                entity_id: switch.controller_192_168_1_60_relay_1
                
          - conditions:#Deuxième condition vérifiée (si vérification de la première échouée)
            #interrupteur_02
              - condition: state
                entity_id: switch.controller_192_168_1_60_relay_2
                state: "on"
            sequence:
              - service: switch.turn_off
                entity_id: switch.controller_192_168_1_60_relay_2
                
          - conditions:#Troisième condition vérifiée (si vérification de la deuxième échouée)
            #interrupteur_03
              - condition: state
                entity_id: switch.controller_192_168_1_60_relay_3
                state: "on"
            sequence:
              - service: switch.turn_off    
                entity_id: switch.controller_192_168_1_60_relay_3

salut,

je partirais plus sur une automation simple comme cette exemple
switch.relais_1 s’ active, il attend 1 seconde puis se désactive automatiquement.

alias: "Bouton poussoir pour Relais 1"
trigger:
  - platform: state
    entity_id: switch.controller_192_168_1_60_relay_1
    to: "on"
    for: "00:00:01"
action:
  - service: switch.turn_off
    entity_id: switch.controller_192_168_1_60_relay_1

Je viens de copier ce code dans mon fichier automations.yaml et pas plus de résultat .
Il doit y avoir une autre erreur ailleurs !

message erreur obtenu : Échec de l'exécution de l'action Bouton_poussoir_pour_Relais_1/undefined. required key not provided @ data['service']. Got None

Assure-toi que les entités existent bien dans Home Assistant
(switch.controller_192_168_1_60_relay_1, etc.)

ça fonctionne très bien chez moi avec un ESP-12F_Relay_X8

les relais pour le volet tu doit ajuster la durée en fonction de la monté et descente .

ne pas importer directement dans le fichier automations.yaml mais crée une nouvelle automatisation .

essaye comme ça ,

alias: Bouton poussoir pour Relais 1
triggers:
  - entity_id:
      - switch.controller_192_168_1_60_relay_1
    to: "on"
    for:
      hours: 0
      minutes: 0
      seconds: 1
    trigger: state
actions:
  - action: switch.turn_off
    target:
      entity_id: switch.controller_192_168_1_60_relay_1

ou bien

alias: "Bouton poussoir pour Relais 1"
trigger:
  - platform: state
    entity_id: switch.controller_192_168_1_60_relay_1
    to: "on"
action:
  - delay: "00:00:01"
  - service: switch.turn_off
    target:
      entity_id: switch.controller_192_168_1_60_relay_1

Salut
Ce n’est pas une bonne idée de toucher au fichier automations.yaml.
Pour tes automatisations passe par l’UI si tu ne veux pas perdre tous ce que tu auras fait en cas d’erreur.

1 « J'aime »

Pas mieux,
Voici le code de mon bouton :

show_name: true
show_icon: true
type: button
entity: automation.bouton_poussoir_pour_relais_1
name: volet
icon_height: 60px

Lorsque je passe par une nouvelle automations, il faut que je renomme mon automation ce que je fais et je récupère une erreur 500 avec impossibilité d’enregistrer .

je pense que tu ne lit pas tout vu que tu qu’une seule automatisation dans ton fichier ?!

et je vois que tu la utilise pour le volet la c’est sur qu’ avec un délais d’une seconde il ne bougera pas d’un mm ,

Comment créer une automatisation sur Home Assistant en YAML ?

Accédez à Paramètres > Automatisations et scènes et, dans le coin inférieur droit, sélectionnez le bouton Créer une automatisation. Sélectionnez Créer une nouvelle automatisation. une fois cree sélectionne les 3 point en haut a droite puis « modifier en yaml »

J’ai déja fait deux automations sans succès mais c’est peut être le temps trop court, je vais augmenter pour voir

En mettant à 10 seconde, ça ne change rien, le relais ne colle pas .

L’automation ne fait pas coller le relais mais au contraire le désactive

Des que tu vas activer ton relais l’automatisation vas le désactiver au bout d’une seconde

On est d’accord que : delay: 00:00:01, cela correspond à HH:MNTS:SEC ?
Même en mettant 00:00:50 il ne se passe rien, le relais ne colle pas .
En revanche, si je passe sans l’automation, tout fonctionne en ON/OFF .

Oui, c’est comme cela que je l’imagine, mais ça ne fonctionne pas !

[Transformation switch -> relais en poussoir - #6 par LAGLOBULE]
l’automatisation va juste remette le relais à Off une fois activé , ce n’est pas en déclenchant l’automatisation que tu va activer l’ouverture ou la fermeture , mais le bouton du relais souhaité , ainsi l’action de l’automatisation passera celui ci a Off

1 « J'aime »

C’est pas ce que tu semble dire
Car l’automatisation n’active pas le relais
Donc normal qu’il ne colle

1 « J'aime »

Je me suis sans doute mal exprimé et j’en suis désolé car je fais perdre du temps à tout le monde . Je vais essayer d’être le plus clair possible :
Actuellement je dispose d’une carte relais IP avec 8 relais . J’ai ajouté une intégration pour commander ces relais par switchs . dès lors que je bascule un switch en ON, le relais colle si je le bascule sur OFF, le relais décolle et ceci pour les 8 relais . donc 8 switchs, 8 relais …
Je voudrais que sur 4 de ces commutateurs ils puissent fonctionner comme un bouton poussoir, je bascule sur ON, le relais colle et aussitot le switch revient dans sa position initiale OFF et le relais se décolle sans autre manipulation . Vraiment le fonctionnement d’un bouton poussoir mais avec un relais dans le circuit .

C’est exactement le fonctionnement de l’automatisation que t’as @hackdiy
Lorsque tu colles ton relais l’automatisation le détecte et au bout d’une seconde le décolle

Mais tu dois adapté son automatisation a ton entité avec le nom de tes switches

1 « J'aime »

si ta bien suivi le poste tout est y , je vois pas le comment du pourquoi ça ne fonctionnerai pas

c’est exactement ce que j’ai fait

et bien moi non plus

Voici l’entité que j’ajoute à mon TB pour faire fonctionner mes 8 relais et tout fonctionne .

Le code yaml est très simple :

et voici l’automation pour un relais :

J’ai isolé un bouton pour faire un test dont voici la config :

J’ai la même chose pour le relais 2

Elle est ou ton automatisation ?