Switch virtuel pour savoir les portes ouvertes

Bonjour,

J’ai une configuration lovelace pour savoir quelles portes sont ouvertes :

type: entity-filter
entities:
  - binary_sensor.fenetre_bureau
  - binary_sensor.porte_cuisine_jardin
  - binary_sensor.porte_entree
  - binary_sensor.porte_garage
  - binary_sensor.porte_jardin_garage
state_filter:
  - 'on'
card:
  type: entities
  title: Portes/Fenêtres ouvertes

J’aimerais savoir si c’était possible d’avoir un switch virtuel affichant la même information pour pouvoir requêter ce switch et faire une query dessus (envoyer l’information par sms).

Merci !

Salut
Tu peux créer un groupe de capteurs binaires avec tes différents sensors.
Appareils et services → Entrées → Créer une entrée
Tu choisis groupe et ensuite groupe de capteurs binaires.

Salut,

Je n’ai pas compris ce que tu veux faire avec ce switch virtuel.
Car si tu dis « switch » ça sous entend quelque chose de binaire avec des états on ou off.
Mais du coup je ne vois pas ce que tu entends par faire des query dessus.
Donc que voudrais tu comme résultat, as tu des exemples plus concrets de ce que tu cherches?

Effectivement je n’ai pas bien exprimé le besoin et le mot switch n’est pas forcément adapté.

En fait je veux juste avoir une entité (ou autre peu importe) qui me dise quelle port est ouverte à l’instant présent. C’est ce que fais le lovelace.
Comme ça, avec une requête curl via l’API, je pourrais envoyer cette information par sms.

Par exemple, j’utilise cette automation le soir qui se déclenche si une ou plusieurs portes sont ouvertes et qui me dit lesquelles :

alias: All_Doors_Not_Closed
description: ''
trigger:
  - platform: time
    at: '23:30:00'
condition:
  - condition: template
    value_template: >-
      {{ states | selectattr('entity_id', 'in',
      state_attr('group.all_doors_windows','entity_id')) |
      selectattr('state','in',['on','open']) | list | length >= 1 }}
action:
  - service: switch.turn_on
    data: {}
    target:
      entity_id: switch.sound_warning_all_doors_not_closed
  - service: switch.turn_on
    data: {}
    target:
      entity_id: switch.all_doors_not_closed
  - service: notify.notify
    data_template:
      title: Tout n'est pas fermé
      message: >
        {% set open_windows = ( states | selectattr('entity_id', 'in',
        state_attr('group.all_doors_windows','entity_id')) |
        selectattr('state','in',['on','open']) | list | map(attribute='name') |
        join(', ') ) %} Les portes ou fenêtres suivantes ne sont pas fermées: {{
        open_windows }}
mode: single

Salut,

en théorie tu peux créer une entité de type input_text dans « Appareils et services > Entrées > Créer une entrée ».
Et ensuite changer sa valeur avec une automatisation qui se déclenche à chaque changement d’état d’un des capteurs, en utilisant une logique comme celle que tu utilise déjà.
Un input_text peut se mettre à jour avec le service input_text.set_value

Je vais donc vérifier cette théorie ! :wink: merci pour ton aide @AlexHass

Hello,

Il doit me manquer quelque chose car rien ne se passe quand j’ouvre une porte. Je pensais voir le statut de mon input text à OPEN

configuration.yaml :

input_text:
  opened_doors:
    name: opened_doors
    initial: Closed

Et l’automation :

alias: Real_time_opened_doors
description: ''
trigger:
  - platform: template
    value_template: >-
      {{ states | selectattr('entity_id', 'in',
      state_attr('group.all_doors_windows','entity_id')) |
      selectattr('state','in',['on','open']) | list | length >= 1 }}
condition: []
action:
  - service: input_text.set_value
    data:
      value: OPEN
    target:
      entity_id: input_text.opened_doors
mode: single

Merci pour votre aide !

Hello

tu l’as crée le groupe ?

Salut
Et il n’y a rien qui remet l’input_text à Closed ?
Ça risque de faire bizarre quand le template retournera false…

Oui le groupe est bien créé. Je l’utilise pour mon automation All_Doors_Not_Closed

Non effectivement. Mais j’imagine si pas « OPEN » alors N/A ?

ça dépends …
La logique voudrais que si AUCUNE fenêtre n’est ouverte, elles sont toutes FERMEES, non ?
Après, très honnêtement, je vois mal la finalité de cette config.
Si c’est juste pour afficher/obtenir une info (=nb de fenêtres ouvertes), pas besoin d’une automatisation pour calculer tout ça : Pour moi un bête sensor template, avec quasi le même code que le trigger suffit.
ça ME semble plus léger qu’un input_text (qui est plutot destiné à un usage manuel pour choisir parmi une liste) + une automatisation pour le remplir avec un texte (qui ajourd’hui est fixe…)

Tout a fait d’accord avec Pulpy-Luke, il faut 2 sensors pour moi, 1 qui donne le nombre de porte ouverte, et un autre qui te donnera le ou les noms des portes ouverte que tu pourras envoyer par sms.
largement plus simple qu’une automation, et cela se met a jour en live.

Même sur celui là, c’est peut-être pas la peine de faire un sensor… On établit la liste au moment du message (dans l’automatisation d’envoi)
Comme ça, on évite les recalculs réguliers et l’historique en base.
Au pire, en attribut du 1er sensor

Je suis preneur de la solution la plus simple :slight_smile:

J’ai testé avec ça mais je n’obtiens aucune valeur pour mon sensor sensor.door_status :

  - platform: template
    sensors:
      doors_status:
        entity_id:
          - sensor.doors_status
        friendly_name: "door_status"
        value_template: "{% set open_windows = ( states | selectattr('entity_id', 'in',        
    state_attr('group.all_doors_windows','entity_id')) |        
    selectattr('state','in',['on','open']) | list | map(attribute='name')
    |         join(', ') ) %}  {{         open_windows }}"

Il y a des soucis d’indentation sur la partie template

Et pourtant sur outils de développement/template ca passe :

C’est surtout pas du yaml ce petit morceau que tu copie/colle là mais du jinja donc c’est tout à fait normal que ça fonctionne.

Bonjour,

Le group.all_doors_windows sera ON si au moins une porte ou fenêtre est ouverte et sera OFF si toutes les portes ou fenêtres sont fermées. Je ne pense pas qu’il faille autre chose.

J’ai un script similaire qui se déclenche lorsque j’ouvre la porte du garage et m’ averti si une porte ou fenêtre est restée ouverte et je n’utilise que la valeur du groupe.

Cordialement,

Abel