Lancer script suivant etat bouton

Bonjour,
Je cherche à lancer deux scripts différents suivant l’état d’un bouton. Je m’explique.
J’ai créé une carte toute simple avec un bouton simple deux états et je souhaiterai:

  • lancer le script A quand le bouton est sur ‹ on ›
  • lancer le script B quand le bouton est sur ‹ off ›

Si vous pouviez me guider… :grinning:
Merci :wink:

Salut

A mon avis la carte n’est pas le meilleur moyen d’y arriver…
Je partirai sur un template switch puisqu’il existe de base une fonction on et un off qui sont gérées automatiquement

Après l’affichage ne posera aucun souci, puisque ça sera une enité parfaitement normalisée

avec les « automations » tu peux le faire avec des if state = a alors lancer scripts …ect

J’avais lu que les automatisations n’étaient pas trop faite pour ce genre d’utilisation c’est à dire via du déclenchement par bouton ou IHM.
Petite précision, mon bouton est un bouton virtuel (HA)
Si j’ai bien compris, je créé un bouton dans « appareils et services / entrée » et c’est lui qu’il me faudra appeler dans le configuration.yaml.
Par contre comment je peux savoir s’il me retourne un 1 ou 0, true ou false, etc…?
Ou alors je me plante complet, ce qui est fortement possible vu que je débute sur HA… :grin:

Salut

Effectivement une automatisation n’est pas la solution dans ton cas.

Non, t’as mal compris. :sweat_smile:

Tu dois supprimer ton bouton et @Pulpy-Luke te suggère d’utiliser un template switch.
Tu dois mettre quelque chose comme ça dans ton fichier config.yaml:

switch:
  - platform: template
    switches:
      arrosage:
        turn_on:
          service: switch.turn_on
          target:
            entity_id: script.arrosage_ponctuel
        turn_off:
          service: switch.turn_off
          target:
            entity_id: script.arrosage_stop

Et tu n’as plus qu’à rajouter l’entité dans ton dashboard.

1 « J'aime »

Il y a toujours moyen de faire la même chose par plusieurs mécanismes, le but c’est quand de faire au plus simple : un bouton qui déclenche une automatisation qui joue un script, c’est lourd.
Cependant l’idée de base à retenir est la suivante : les cartes ça sert uniquement à la partie cosmétique des entités… donc ça gère rien de l’aspect mécanique/automatisme.
A la limite, on se sert des états pour l’affichage icon/icon_color mais même ça c’est parfois pas uniforme entre les cartes à base JavaScript ou celles à base de template Jinja. Perso je préfère le customize.yaml, ça marche partout, ça marche pareil et avec n’importe quelle carte

1 « J'aime »

Merci pour votre aide, j’avance mais… :grin:
Aucune erreur quand je clique sur le bouton on ou off mais rien ne se passe.
Si je lance les deux scripts manuellement via exécuter dans automatisation et scènes / scripts, les deux fonctionnent parfaitement.

C’est ou que je déconne? :flushed: :weary: :grinning:

image

Pour faire ce que tu veux dans ton cas particulier tu n’as pas besoin de lancer 2 actions puisque le script gère déjà cela.

Tu as juste besoin d’une carte bouton qui appelle le script.

Exemple avec l’appel de msunpv_s1_auto :
bouton

show_name: true
show_icon: true
type: button
tap_action:
  action: call-service
  service: script.msunpv_s1_auto
  target: {}
show_state: false
icon: mdi:water-boiler
icon_height: 64px
entity: script.msunpv_s1_auto

Par contre le bouton ne reste pas allumé puisque une fois le script executé sont état redevient off.
Si tu veux que le bouton reste allumé temps que autobal est activé il faut passer par des cartes qui supportent le templating (mushroom_template, custom_button_card et certainement d’autres) comme montré dans les exemples de la doc.

https://github.com/tochy83/MsunPv_to_HA/blob/main/COMMANDES.md#exemple-du-fonctionnement-en-image

Le code de la carte (à base de mushroom_chips_card) y est donné.


Autre précision mais qui n’a rien a voir avec la création de la carte en elle même :
Pour « allumer » ManuBal, tu appelles bien le script msunpv_s1_manuel par contre pour « l’éteindre » tu essai d’appeler le script msunpv_s1_auto.

Ce n’est pas comme ça que fonctionne le routeur.

Le bouton AutoBal ne sert que pour lancer une mise en route à pleine puissance en fonction des programmations horaires définies sur le routeur. il n’a aucune incidence sur le routage en lui même.

Du coup pour « éteindre » ManuBal soit tu re-lance le script msunpv_s1_manuel (le script est prévu pour) soit tu lance le script msunpv_s1_off qui lui « éteint » aussi bien ManuBal que AutoBal.

1 « J'aime »

Dans ma logique, je m’étais dit qu’après une marche forcée, repasser le routeur en auto était correct.
C’est pourtant ce que j’ai fait avec une automatisation qui force la chauffe pendant 1 heure via le script msunpv_s1_manue et remet le route en AutoBal avec le script script msunpv_s1_auto.
Pourquoi ce fonctionnement n’est pas correct? C’est l’equivalement des deux boutons sur l’IHM du Msunpv non?

Si tu as des programmations horaires sur le routeur et que tu veux qu’elles soient lancées oui il faut mettre en AutoBal mais si il n’y en a aucune, AutoBal n’aura aucune incidence.

Que AutoBal soit allumé ou éteint, le routeur routera quand il y aura du surplus.

AutoBal a la même fonction que ManuBal mais pour des horaires pré-définis. Si tu as une programmation par ex. de 1h00 à 5h00 et que AutoBal est allumé le routeur lancera la sortie cumulus à pleine puissance (100%) entre ces horaires.

Si tu gères la marche forcée dans des automatisations via HA, le seul script utile est ‹ msunpv_s1_manuel › aussi bien pour mettre en route que pour arrêter la marche forcée.

En fait j’ai fait ça:

En gros, le routeur est toujours en auto sauf pendant 1 heure (après 17h, les panneaux ne produisant plus actuellement).
J’ai pas de plage horaire dans le routeur, je voulais tout gérer via HA.

J’ai récupéré ton code pour la carte mushroom, c’est excellement et ce que je recherchais à faire…
Merci

Dans ce cas là rappelle juste ‹ msunpv_s1_manuel › ou ‹ msunpv_s1_off › après ton délai.

Même si vu que tu n’as pas de prog horaire sur le routeur ça n’a pas d’importance, comme expliqué plus haut le routeur n’a pas besoin d’être sur AutoBal pour fonctionner.

1 « J'aime »