Création d'un bouton à 2 états pour absent présent avec fonction derrière pour couper les caméras

Bonjour

j’ai besoin de coup de main !

j’aimerais avoir un bouton à 2 états Armé / Désarmé me permettant quand je part de la maison
d’enclencher mes caméras vidéo Réolink connectée sur une prise commandée

voici mon bouton

type: custom:button-card
entity: input_boolean.absent_present
name: |
  [[[ 
    if (entity.state == "on") return "Mode Absent"; 
    else return "Mode Présent";
  ]]]
show_entity_picture: true
size: 100%
styles:
  card:
    - height: 80%
layout: icon_name
aspect_ratio: 3/1
entity_picture: |
  [[[ 
    if (entity.state == "on") return "/local/images/Armer.png"; 
    else return "/local/images/Desarmer.png";
  ]]]

et j’ai fait 2 scripts pour les fonctions le je suis absent

alias: je_suis_absent
sequence:
  - data:
      entity_id: media_player.homepod2
      message: >
        J'ai pris note que vous vous absentez. Vous avez une minute pour sortir.
        Après ce délai, les caméras seront actives. Bonne balade.
      language: fr
    action: tts.google_translate_say
  - action: switch.turn_off
    metadata: {}
    data: {}
    target:
      device_id: 4181ca9fb0a0edb1e906362297f5f362
  - delay:
      hours: 0
      minutes: 0
      seconds: 30
      milliseconds: 0
  - action: switch.turn_on
    metadata: {}
    data: {}
    target:
      device_id: e4ca7b168f3a7054187d52b27426c7d5
  - action: switch.toggle
    target:
      device_id: 796dac4b64afcf49d1d3b081b9f8cf8d
    data: {}
mode: single
description: ""

et le je suis présent

sequence:
  - data:
      entity_id: media_player.homepod2
      message: |
        Bon retour à la maison. Le système vidéo est maintenant désactivé.
      language: fr
    action: tts.google_translate_say
  - delay:
      hours: 0
      minutes: 0
      seconds: 10
      milliseconds: 0
  - action: switch.toggle
    metadata: {}
    data: {}
    target:
      device_id: 796dac4b64afcf49d1d3b081b9f8cf8d
alias: je_suis_present
mode: single
description: ""

et cela ne marche pas j’ai besoin de votre aide

d’avance je vous remercie encore pour votre aide

P.S. J’ai mis les caméras sur des prises commandées pour les couper complètement je sais que l’on peut les couper via une commande mais je pense que c’est plus sur de tirer la prise …

Mike

Salut
Ton soucis c’est que ton bouton il n’agit sur rien il n déclenche rien

Moi je passe par une entrée (helper) un booleen que j’active de plusieurs manières
De façon automatique via le gps de nos téléphones
Mais aussi comme tu le souhaites manuellement via un bouton sur le dashboard et c’est l’état de ce booléen qui conditionne pas mal de choses dans les automatisations
A son changement d’état tu peux déclancher tes scripts (ou même les modifier directement en automatisation)

1 « J'aime »

Salut

Comme dit par @ddfdom ton bouton ne déclenche rien, il te faut créer un automatisme qui lancera les scripts en fonction de l’État du bouton (input_boolean.absent_present) qui servira de trigger dans l’automatisme.

Bonsoir,

Il n’y a pas besoin d’input_boolean… Tu appelles directement tes scripts avec tap_action en fonction de l’état de ton switch… De la m^me manière, tu bases l’aspect de ton image sur l’état du switch.

Si tu veux absolument garder ton input_boolean, il faut là encore utiliser tap_action pour modifier son état et le lier à ton switch avec une automatisation mais c’est vraiment pas utile.

C’est pourtant tellement plus pratique ce booléen me sert dans un grand nombre d’automatisation

Bonsoir,
Une prise connectée par caméra me parait un peu beaucoup non ?
Pourquoi pas un PTZ “présent” qui regarde le mur, plafond ou le sol quand tu es chez toi ?
Il me semble que certain le font comme ça.
Sinon, comme @ddfdom , mes automatisations de détection, snapshot etc… ne s’activent que si mon portable est chez moi.

Bob

1 « J'aime »

oui, en plus avec button-card v5.xx, tu peux faire un tap_action sur la carte et un icon_tap_action sur l’icône :slight_smile:

bonsoir

merci pour tout les messages et en fonction de votre remarque il n’y aurais pas besoin de mon input mais je ne comprends pas comment adapter mon bouton en fonction comme mentionné faire un tap-Action pouvez vous me montrer en adaptant mon bouton merci encore pour votre aide

Mike

Déjà regarde ça

Puis le doc officielle

Voici un exemple que j’utilise pour exécuter un script depuis un button card

tap_action:
  action: call-service
  service: script.lock_and_go

Pour info, depuis la 5.02 ou 5.1.0dev ( je sais plus), on peut utiliser les actions de HA :

tap_action:
  action: perform-action
  perform_action: script.nouveau_script

et mettre un spinner aussi pour des scripts ou automatisations :

      - type: custom:button-card
        entity: script.nouveau_script
        name: Allumer platines
        icon: mdi:album
        show_state: true
        aspect_ratio: 3/1
        layout: icon_name_state2nd
        size: 100%
        spinner: "[[[ return entity.state === 'on' ]]]"
        state:
          - value: "on"
            spinner: true
            styles:
              spinner:
                - "--button-card-spinner-color": green
        styles:
          name:
            - font-size: 0.9em
            - white-space: normal
          icon:
            - color: green
          card:
            - "--button-card-ripple-color": green
            - "--button-card-ripple-hover-opacity": 0.2
            - "--button-card-ripple-pressed-opacity": 0.3
          spinner:
            - pointer-events: none !important
            - "--button-card-spinner-background-color": none
            - "--button-card-spinner-size": 1.3vw
            - padding: 3px 3px
        tap_action:
          action: perform-action
          perform_action: script.nouveau_script

popup1

Bonjour @ddfdom,

Loin de moi l’idée que les input_boolean ne sont pas très pratiques (et utiles) dans de nombreux cas…

Là en l’occurence, un input_boolean n’a pas d’intérêt. Autant lier directement le bouton au switch ce qui permettra un toggle automatique de celui-ci (pas besoin de définir de tap_action) et de modifier le nom et l’image avec la propriété “state” du bouton. ( Aller plus loin avec la carte custom:button-card )

Dans le cas d’actions simultanées sur plusieurs entités identiques, il vaut mieux utiliser un groupe (groupe de switches ou de lights) et lier le groupe au bouton. En revanche en cas d’actions simultanées sur des entités différentes, là un input_boolean a tout son intérêt (entrée et automatisation).

il vas surtout vite se rendre compte que l’etat absent/présent est utilisable dans plein de scripts et pas forcement que comme decléncheur mais aussi comme condition et que plus tard quand il voudra activer un mode action basé sur le GPS par exemple que son bouton manuel isolé est bien trop "restrictif’

1 « J'aime »

c’est quoi l’interet ? c’est juste visuel ?

1 « J'aime »

A priori, il doit pouvoir être utilisé en attente d’un retour d’état (automatisations avec délai par exemple)

2 « J'aime »

Oui, c’est visuel. Ça tourne le temps que ton script/automatisation ça charger complètement.

1 « J'aime »

ah oui alors ce n’est pas que visuel :+1:

C’est visuel à titre indicatif :grin:

bonjour messieurs

ma question à suscité bien des réactions et d’après ce que j’ai compris il y a 2 facons de faire j’ai lu les échanges mais je ne comprends pas forcement tout ce qui c’est dit !! c’est comme si tu assiste à une discussion et que tu te dit ‹  › mais il parle de quoi … ‹  ›

alors maintenant je suis au même point que quand j’ai posé ma question

est il possible de m’aider avec la solution la plus facile et simple à mettre en place mon bouton
présent absent avec la fonctionnalité mentionnée plus haut ?

Merci encore pour votre aide et votre support

Mike

1 « J'aime »

Salut

as-tu essayé avec quelque chose comme ça :

type: custom:button-card
entity: input_boolean.absent_present
name: |
  [[[ 
    if (entity.state == "on") return "Mode Absent"; 
    else return "Mode Présent";
  ]]]
show_entity_picture: true
size: 100%
styles:
  card:
    - height: 80%
layout: icon_name
aspect_ratio: 3/1
entity_picture: |
  [[[ 
    if (entity.state == "on") return "/local/images/armer.png"; 
    else return "/local/images/desarmer.png";
  ]]]
tap_action:
  action: perform-action
  perform_action: |
    [[[ 
      if (entity.state == "on") return "script.je_suis_absent"; 
       else return "script.je_suis_present";
    ]]]

Je ne suis pas certain du résultat, car habituellement, je lance les scripts à partir d’une automatisation et jamais à partir d’une carte.
(Ce n’est peut-être pas la solution la meilleure, mais c’est celle que j’arrive à faire fonctionner)

Exemple automatisation :

code automatisation
description: ""
mode: single
triggers:
  - trigger: state
    entity_id:
      - input_boolean.absent_present
    id: "on"
    to: "on"
  - trigger: state
    entity_id:
      - input_boolean.absent_present
    id: "off"
    to: "off"
conditions: []
actions:
  - choose:
      - conditions:
          - condition: trigger
            id:
              - "on"
        sequence:
          - action: script.turn_on
            metadata: {}
            data: {}
            target:
              entity_id: script.je_suis_present
      - conditions:
          - condition: trigger
            id:
              - "off"
        sequence:
          - action: script.turn_on
            metadata: {}
            data: {}
            target:
              entity_id: je_suis_absent
1 « J'aime »

salut merci bcp je vais essayer et reviens donner des nouvelles

mike