Configuration en Bluetooth de la détection de présence - Problème

J’ai bien un fichier json, mais je vois rien :

{
  "trace": {
    "last_step": "action/1",
    "run_id": "6ace0ea1f108d01d3e5c5c689948b487",
    "state": "stopped",
    "script_execution": "finished",
    "timestamp": {
      "start": "2024-04-20T10:28:05.536340+00:00",
      "finish": "2024-04-20T10:28:08.254181+00:00"
    },
    "domain": "automation",
    "item_id": "1712750803094",
    "trigger": null,
    "trace": {
      "trigger": [
        {
          "path": "trigger",
          "timestamp": "2024-04-20T10:28:05.536567+00:00",
          "changed_variables": {
            "this": {
              "entity_id": "automation.garage_door_open_notification",
              "state": "on",
              "attributes": {
                "id": "1712750803094",
                "last_triggered": "2024-04-18T09:17:26.553597+00:00",
                "mode": "single",
                "current": 0,
                "friendly_name": "Sécurité - Alerte - Garage - Porte"
              },
              "last_changed": "2024-04-20T09:26:11.922748+00:00",
              "last_reported": "2024-04-20T09:26:42.330602+00:00",
              "last_updated": "2024-04-20T09:26:11.922748+00:00",
              "context": {
                "id": "01HVXD7PPJCSVNX7SCXZ7D5CDP",
                "parent_id": null,
                "user_id": null
              }
            },
            "trigger": {
              "platform": null
            }
          }
        }
      ],
      "action/0": [
        {
          "path": "action/0",
          "timestamp": "2024-04-20T10:28:05.538068+00:00",
          "changed_variables": {
            "context": {
              "id": "01HVXGS1908Y6Z7CQXVJNW6BSC",
              "parent_id": "01HVXGS18Z1YMX42Q7S4KCE43G",
              "user_id": null
            }
          },
          "result": {
            "params": {
              "domain": "notify",
              "service": "notify",
              "service_data": {
                "message": "Porte du garage ouverte"
              },
              "target": {}
            },
            "running_script": false
          }
        }
      ],
      "action/1": [
        {
          "path": "action/1",
          "timestamp": "2024-04-20T10:28:08.229879+00:00",
          "result": {
            "params": {
              "domain": "tts",
              "service": "speak",
              "service_data": {
                "cache": true,
                "media_player_entity_id": "media_player.assistants_vocaux",
                "message": "la porte du garage est ouverte",
                "language": "fr",
                "entity_id": [
                  "tts.google_fr_fr"
                ]
              },
              "target": {
                "entity_id": [
                  "tts.google_fr_fr"
                ]
              }
            },
            "running_script": false
          }
        }
      ]
    },
    "config": {
      "id": "1712750803094",
      "alias": "Sécurité - Alerte - Garage - Porte",
      "description": "",
      "trigger": [
        {
          "platform": "state",
          "entity_id": [
            "cover.smart_garage_door_2201056910492536102948e1e98494c8_garage"
          ],
          "for": {
            "hours": 0,
            "minutes": 0,
            "seconds": 2
          },
          "to": "opening"
        }
      ],
      "condition": [
        {
          "condition": "time",
          "after": "22:35:00",
          "before": "06:00:00",
          "weekday": [
            "mon",
            "tue",
            "wed",
            "thu",
            "fri",
            "sat",
            "sun"
          ]
        }
      ],
      "action": [
        {
          "service": "notify.notify",
          "data": {
            "message": "Porte du garage ouverte"
          }
        },
        {
          "service": "tts.speak",
          "metadata": {},
          "data": {
            "cache": true,
            "media_player_entity_id": "media_player.assistants_vocaux",
            "message": "la porte du garage est ouverte",
            "language": "fr"
          },
          "target": {
            "entity_id": "tts.google_fr_fr"
          }
        }
      ],
      "mode": "single"
    },
    "blueprint_inputs": null,
    "context": {
      "id": "01HVXGS1908Y6Z7CQXVJNW6BSC",
      "parent_id": "01HVXGS18Z1YMX42Q7S4KCE43G",
      "user_id": null
    }
  },
  "logbookEntries": []
}

D’accord, d’accord…

Oui.

Ah !
Et le mets où

dans mon code ?
alias: Sécurité - Alerte - Garage - Porte
description: ""
trigger:
  - platform: state
    entity_id:
      - cover.smart_garage_door_2201056910492536102948e1e98494c8_garage
    for:
      hours: 0
      minutes: 0
      seconds: 2
    to: opening
condition:
  - condition: time
    after: "22:35:00"
    before: "06:00:00"
    weekday:
      - mon
      - tue
      - wed
      - thu
      - fri
      - sat
      - sun
action:
  - service: notify.notify
    data:
      message: Porte du garage ouverte
  - service: tts.speak
    metadata: {}
    data:
      cache: true
      media_player_entity_id: media_player.assistants_vocaux
      message: la porte du garage est ouverte
      language: fr
    target:
      entity_id: tts.google_fr_fr
mode: single

Désolé de paraître aussi con, mais je suis un peu perdu là.

alias: Alerte fenêtres ouvertes
description: ""
trigger:
  - platform: numeric_state
    entity_id:
      - zone.home
    below: 1
condition:
  - condition: state
    entity_id: binary_sensor.porte_et_fenetres
    state: "on"
action:
  - service: notify.notify
    metadata: {}
    data:
      message: >
        {% set sensor = expand('binary_sensor.porte_et_fenetres') %} {% set open
        = sensor | selectattr('state', 'equalto', 'on') | map(attribute='name')
        | list %}  {% if open | length == 0 %}
          Tout est fermé. 
        {% elif open | length == 1 %}
          {{ open }} est ouverte.
        {% else %}
          Les portes ouvertes sont : {{ open | join(', ') }}.
        {% endif %}
mode: single

Dans ton histoire de lancement tu dois bien voir de façon visuel où ça bloque pour ne pas recevoir ton alerte. Met nous des captures d’une exécution qui n’a pas fonctionné.

Krull,
je suis vraiment, vraiment désolé : je me suis trompé d’automatisation.
C’est celle-là qui me posait problème :

alias: Alerte fenêtres ouvertes
description: ""
trigger:
  - platform: zone
    entity_id: person.corinne
    zone: zone.home
    event: leave
  - platform: zone
    entity_id: person.philippe
    zone: zone.home
    event: leave
condition:
  - condition: state
    entity_id: binary_sensor.porte_et_fenetres
    state: "on"
action:
  - service: notify.notify
    metadata: {}
    data:
      message: >
        {% set sensor = expand('binary_sensor.porte_et_fenetres') %} {% set open
        = sensor | selectattr('state', 'equalto', 'on') | map(attribute='name')
        | list %}  {% if open | length == 0 %}
          Tout est fermé. 
        {% elif open | length == 1 %}
          {{ open }} est ouverte.
        {% else %}
          Les portes ouvertes sont : {{ open | join(', ') }}.
        {% endif %}
mode: single

là j’utilise

    zone: zone.home
    event: leave

et quand je suis absent ainsi que ma femme (et HA Companion me le confirme) lje ne reçois pas d’alerte.

J’avais bien compris et "corrigé " dans mon post plus haut en remplaçant le trigger :stuck_out_tongue_winking_eye:

Donc quand ta femme sort elle reçoit l’alerte ?
Poste les historiques on y verra plus clair.

@ tous les 2 qui sont bien gentils
j’ai changé mon code et je pars dans 30 minutes à 2 kms.
On verra s’il y a une erreur et je vous rendrais compte.
À toute.

Pour tester tes autos, tu peux utiliser les outils de dev et forcer un changement d’état :wink:
Dans ton exemple, passer le statut de la zone.home à 0

Bon ça n’a pas marché.
D’abord il fallu qu’on soit à + d’1km pour que nous soyons considérés comme absent de la maison.
Ensuite je vois ceci :


Ceci pour ce code :

alias: Alerte porte et fenêtres 2
description: ""
trigger:
  - platform: numeric_state
    entity_id:
      - zone.home
    below: 1
condition:
  - condition: state
    entity_id: binary_sensor.porte_et_fenetres
    state: "on"
action:
  - service: notify.notify
    metadata: {}
    data:
      message: >
        {% set sensor = expand('binary_sensor.porte_et_fenetres') %} {% set open
        = sensor | selectattr('state', 'equalto', 'on') | map(attribute='name')
        | list %}  {% if open | length == 0 %}
          Tout est fermé. 
        {% elif open | length == 1 %}
          {{ open }} est ouverte.
        {% else %}
          Les portes ouvertes sont : {{ open | join(', ') }}.
        {% endif %}
mode: single

Ah! « les outils de dev » ?
Je n’ai pas ça :
EDIT : je viens de trouver
Par contre quand je vais dans Appareils et services>Entités>Home on me dit ça :

Cette entité (« zone.home ») n’a pas d’identifiant unique, par conséquent ses paramètres ne peuvent pas être gérés depuis l’interface utilisateur. Consultez la documentation pour plus de détails.

La documentation, je ne comprends rien de ce qui y est écrit. :flushed:

C’est le menu états :wink:

Et le pb est bien dans ta condition comme je l’ai supposé plus haut :wink: Le trigger s’étant bien déclenché quand la valeur de zone.home est passée à 0
Vraiment sûr de ton sensor ?
Dans outils de dev « Etats » quelle est la valeur du binary_sensor.porte_et_fenetres ( fenêtre ouverte et fenêtre fermée) ?

Pas la peine d’y toucher sauf si tu veux réduire le périmètre de la zone home

unknown

!? Pourquoi j’ai ce truc ?

J’ai passé l’état de home à 0, relancé l’automatisation et j’ai bien reçu l’alerte :

Donc assurément pb dans ton sensor ou les éléments qui le composent.

Il ressemble à quoi ?

Ca ne sert à rien comme expliqué plus haut :crazy_face:
La condition et le trigger ne sont pas testés lors d’un déclenchement manuel.

Il faut seulement changer l’état de ta zone home dans les outils de dev ( voir celui de ton sensor à mettre à on) , l’auto va se déclencher toute seule

Ah Okey. Désolé.
Quand tu dis

c’est le regroupement de tous mes capteurs


OK. C’est un groupe de capteurs binaires.
Je suppose que un de ces capteurs passe en état inconnu régulièrement, ce qui fait que ton groupe passe aussi dans cet état et ne peut donc pas fonctionner correctement avec ton automatisation.

La première chose à faire est donc de surveiller l’état de ces capteurs pour dénicher le ou les coupables et solutionner ce décrochage qui les passe en inconnu

Effectivement, j’en ai 1 qui est « Hors ligne » et qui a été vu pour la dernière fois il y a 2 jours.
Je vais voir ça demain.
Mille mercis pour ta gentillesse et ta patience.
Bonne soirée.

1 « J'aime »

Bon. Me revoilà avec mes problèmes.
J’en ai donc 2 qui concerne la détection de présence :

1 - que ce soit avec ce code :

Alerte porte et fenêtres 2
alias: Alerte porte et fenêtres 2
description: ""
trigger:
  - platform: numeric_state
    entity_id:
      - zone.home
    below: 1
condition:
  - condition: state
    entity_id: binary_sensor.porte_et_fenetres
    state: "on"
action:
  - service: notify.notify
    metadata: {}
    data:
      message: >
        {% set sensor = expand('binary_sensor.porte_et_fenetres') %} {% set open
        = sensor | selectattr('state', 'equalto', 'on') | map(attribute='name')
        | list %}  {% if open | length == 0 %}
          Tout est fermé. 
        {% elif open | length == 1 %}
          {{ open }} est ouverte.
        {% else %}
          Les fenêtres ouvertes sont : {{ open | join(', ') }}.
        {% endif %}
mode: single

ou celui-ci :

Alerte fenêtres ouvertes
alias: Alerte fenêtres ouvertes
description: ""
trigger:
  - platform: zone
    entity_id: person.corinne
    zone: zone.home
    event: leave
  - platform: zone
    entity_id: person.philippe
    zone: zone.home
    event: leave
condition:
  - condition: state
    entity_id: binary_sensor.porte_et_fenetres
    state: "on"
action:
  - service: notify.notify
    metadata: {}
    data:
      message: >
        {% set sensor = expand('binary_sensor.porte_et_fenetres') %} {% set open
        = sensor | selectattr('state', 'equalto', 'on') | map(attribute='name')
        | list %}  {% if open | length == 0 %}
          Tout est fermé. 
        {% elif open | length == 1 %}
          {{ open }} est ouverte.
        {% else %}
          Les portes fenêtres sont : {{ open | join(', ') }}.
        {% endif %}
mode: single


c’est pareil :

Arrêté car une condition a échoué

Ce matin, pourtant j’ai remis en ligne le capteur qui s’était échappé (et j’en ai profité pour faire une automatisation pour être alerté si il y en 1 qui décroche).
Bref, j’ai quitté la maison, tous les capteurs étaient en ligne et HA Companion à 1 km (c’est loin) m’a signalé que nous étions absent. Mais l’alerte ne s’est pas déclenchée.
Donc ça marche pas. Et je ne sais pas pourquoi.

2 - le bluetooth qui ne fonctionne pas:
Quand j’avais mis le p’tit bout de code (suivant ainsi le tuto)

# Bloutouffe
bluetooth:

### BLUETOOTH ###
device_tracker:
  - platform: bluetooth_tracker
    interval_seconds: 60 # Le temps en secondes entre chaque scan
    consider_home: 180 # Le temps sans résultat positif, donc considéré comme absent.
    new_device_defaults: # ce qu'il fait s'il y a des nouveaux devices détectés
      track_new_devices: true

et qu’ensuite j’ai voulu vérifier si la syntaxe était correcte par le biais des outils de développement (après avoir bien sûr sauvé le fichier), ça c’est mis à mouliner, mouliner, mouliner…
et à hurler :

Détails du journal (ERREUR)

Enregistreur: homeassistant.util.package
Source: util/package.py:123
S’est produit pour la première fois: 20 avril 2024 à 18:10:59 (6 occurrences)
Dernier enregistrement: 20 avril 2024 à 18:14:57
Unable to install package PyBluez==0.22: error: subprocess-exited-with-error × python setup.py bdist_wheel did not run successfully. │ exit code: 1 ╰─> [19 lines of output] running bdist_wheel running build running build_py creating build creating build/lib.linux-aarch64-cpython-312 creating build/lib.linux-aarch64-cpython-312/bluetooth copying bluetooth/init.py → build/lib.linux-aarch64-cpython-312/bluetooth copying bluetooth/widcomm.py → build/lib.linux-aarch64-cpython-312/bluetooth copying bluetooth/osx.py → build/lib.linux-aarch64-cpython-312/bluetooth copying bluetooth/msbt.py → build/lib.linux-aarch64-cpython-312/bluetooth copying bluetooth/btcommon.py → build/lib.linux-aarch64-cpython-312/bluetooth copying bluetooth/bluez.py → build/lib.linux-aarch64-cpython-312/bluetooth copying bluetooth/ble.py → build/lib.linux-aarch64-cpython-312/bluetooth running build_ext building ‹ bluetooth._bluetooth › extension creating build/temp.linux-aarch64-cpython-312 creating build/temp.linux-aarch64-cpython-312/bluez gcc -fno-strict-overflow -Wsign-compare -DNDEBUG -g -O3 -Wall -fno-semantic-interposition -fno-builtin-malloc -fno-builtin-calloc -fno-builtin-realloc -fno-builtin-free -DTHREAD_STACK_SIZE=0x100000 -fPIC -I./port3 -I/usr/local/include/python3.12 -c bluez/btmodule.c -o build/temp.linux-aarch64-cpython-312/bluez/btmodule.o error: command ‹ gcc › failed: No such file or directory [end of output] note: This error originates from a subprocess, and is likely not a problem with pip. ERROR: Failed building wheel for PyBluez ERROR: Could not build wheels for PyBluez, which is required to install pyproject.toml-based projects

:flushed:

La détection de présence est l’une des pierres d’angle du Home Assistant que je veux mettre en place.
Il n’y a pas de raison que je n’y puisse à travers une solution éprouvée et pérenne.
Mais j’ai besoin de votre aide.
À votre bon cœur.

Hello

Je n’avais pas fait attention au contenu du message que tu envoies .
Pourquoi ajoute tu une condition si dans ton message tu veux savoir que tout est fermé ou que quelque chose est resté ouvert ?

Donc supprime la condition, et pour tester, ferme tous tes ouvrants, et via l’outil de dev passe zone.home à 0 , tu devrais recevoir le message tout est fermé .Puis ouvre un ouvrant et passe la zone.home de nouveau à 0 pour vérifier l’autre cas

1 « J'aime »

Pour le bluetooth regarde mon message plus haut.

Pour ton automatisation regarde l’onglet détail de l’étape.

1 « J'aime »