Binary sensor template actualisé par un webhook

Bonjour,

Je suis novice dans la création d’un modèle de binary_sensor, et mon sensor créé ne fonctionne pas.

Je voudrais que ce binary_sensor se mette à jour (valeur cible = ON pendant une seconde) à chaque fois qu’il reçoit un webhook.

Lorsque je le créé avec le code suivant, la fenêtre de dialogue m’indique qu’il ne se mettra pas à jour automatiquement, car il n’écoute aucun évènement.

- trigger:
   - platform: webhook
      webhook_id: YzBk86hg5f08jhasXsFc67

Si quelqu’un s’y connait et peut m’aider ?

Merci :slight_smile:

Arnaud

Bonjour,

Dans cette doc tu as un exemple de trigger based template : Template - Home Assistant

Dans ton cas le trigger est plutôt un webhook_id et pas un sensor mais un binary_sensor

- trigger:
    - trigger: webhook
      webhook_id: "some_hook_id"
      allowed_methods:
        - GET
      local_only: false
  binary_sensor:
    # Keep track how many days have past since a date
    - name: "MyBinarySensor"
      unique_id: 2716679d-6999-4239-b105-fb24e4718d45
      state: "true"
      auto_off:
        seconds: 1

Je l’ai testé par un webhook NabuCasa et ca marche comme tu le veux. Par contre j’ai du activer le webhook coté Nabu qui avait été créé automatiquement (mais désactivé).

En dehors de NabuCasa, il me semble que seule les automatisations peuvent créer un webhook. Donc il faudrait créer une automatisation qui ne fait rien mais qui prend en trigger un webhook. Comme cela, ca te donner un webhook_id a mettre dans le code que je t’ai indiqué.

Exemple d’automatisation :

alias: Nouvelle automatisation
description: ""
triggers:
  - trigger: webhook
    allowed_methods:
      - GET
    local_only: false
    webhook_id: "-4DTt2JV5yViYC_pZyCgFB9e7"
conditions: []
actions:
  - action: logbook.log
    metadata: {}
    data:
      message: Webhook Reçu
      entity_id: binary_sensor.mybinarysensor
      name: Webhook Test
mode: single

Tu reprend le webhook id indiqué dans le code du trigger, redémarrage HA et ca devrait le faire

- trigger:
    - trigger: webhook
      webhook_id: "-4DTt2JV5yViYC_pZyCgFB9e7"
      allowed_methods:
        - GET
      local_only: false
  binary_sensor:
    # Keep track how many days have past since a date
    - name: "MyBinarySensor"
      unique_id: 2716679d-6999-4239-b105-fb24e4718d45
      state: "true"
      auto_off:
        seconds: 1
1 « J'aime »

Merci mguyard :slight_smile:

Alors j’ai réussi grace à tes explications à créer le binary_sensor (cam_garage_motion) et à le faire appeler par un webhook :slight_smile: :

Le code du binary_sensor :

- trigger:
    - platform: webhook
      webhook_id: "-xxxxxxxxxxxxx"
      allowed_methods:
        - GET
      local_only: false

Le résultat d’un appel webhook :

Mais… le sensor ne change pas d’état après l’appel webhook :frowning:

Je ne sais pas pourquoi…

Et de plus, lorsque je met le code complet pour auto_off à 1 seconde :

- trigger:
    - platform: webhook
      webhook_id: "-xxxxxxxxxxxxx"
      allowed_methods:
        - GET
      local_only: false
  binary_sensor:
    - name: "cam_garage_motion"
      unique_id: 2716679d-6999-4239-b105-fb24e4718d45
      state: "true"
      auto_off:
        seconds: 1

j’obtiens alors ce message d’erreur :

(j’ai essayé toutes les indentations possibles, mais cela ne résoud pas le problème qui doit venir d’ailleurs ?). D’ailleurs dois-je saisir moi même le unique_id ?

Je suis vraiment novice, je l’avais dit :laughing:

Tu as créer le sensor en YAML ou tu as fait ça dans les modèles ?
Car il faut le créer pas utiliser les modèles UI ça marche pas pour ce que tu veux faire

J’ai utilisé le menu Paramètres / Entrées / Créer une entrée / Template / Binary_Sensor, puis j’ai renseigné en YAML le code dans la fenêtre de configuration du Binary_Sensor.

Et ensuite j’ai redémarré HA.

Si je dois je refaire 100% en YAML, quel fichier dois je éditer ? (HA tourne chez moi dans un container)

Bonjour,

Mon fichier configuration.yaml ressemble à ceci :

# Loads default set of integrations. Do not remove.
default_config:

# Load frontend themes from the themes folder
frontend:
  themes: !include_dir_merge_named themes

automation: !include automations.yaml
script: !include scripts.yaml
scene: !include scenes.yaml

Je n’y vois pas le binary_sensor que j’ai précédemment créé via l’UI (ni dans les 3 autres fichiers include *.yaml) :thinking:

Du coup, je ne sais pas dans quel fichier .yaml coller le code ci-dessous, car j’imagine que ce binary_sensor déjà créé existe bien quelque part …

- trigger:
    - trigger: webhook
      webhook_id: "-4DTt2JV5yViYC_pZyCgFB9e7"
      allowed_methods:
        - GET
      local_only: false
  binary_sensor:
    - name: "cam_garage_motion"
      unique_id: 2716679d-6999-4239-b105-fb24e4718d45
      state: "true"
      auto_off:
        seconds: 1

Merci pour votre aide, et bon dimanche :slight_smile:

Bonjour,
tout ce qui est créé par le UI, ne sera pas dans un fichier en YAML.

Un template en YAML, ce met dans le configuration.yaml

1 « J'aime »

Hello,

J’étais justement en train de te répondre.

J’ai regardé et je pense pas que tu puisses personnaliser vraiment comme il le faut en passant par la UI HA.
La UI HA ne peut gérer le trigger mais juste te faire un template binary_sensor.

C’est normal car tu l’a créé par l’UI est donc c’est en BDD et non en YAML.

Pour créer en YAML, tu fais un fichier templates.yaml avec ce contenu :

- trigger:
    - trigger: webhook
      webhook_id: "-4DTt2JV5yViYC_pZyCgFB9e7"
      allowed_methods:
        - GET
      local_only: false
  binary_sensor:
    - name: "cam_garage_motion"
      unique_id: 2716679d-6999-4239-b105-fb24e4718d45
      state: "true"
      auto_off:
        seconds: 1

Et tu met ceci dans ton configuration.yaml :

template: !include templates.yaml

Tu reload la configuration de HA et ca devrait marcher

Attention : Ton webhook ID doit bien correspondre à celui de ton automatisation.

1 « J'aime »

D’accord, merci beaucoup pour vos réponses.

Et pour le unique_id, je le trouve via le fichier core.config_entries je suppose,

Je vous tiens au courant… encore merci :slight_smile: :pray:

Non le unique_id est un identifiant unique pour le sensor.
Tu peux mettre ce que tu veux. Moi j’utilise l’addon vscode qui permet de generer le code.
L’important étant de ne pas avoir le même unique_id sur plusieurs sensor.
Si tu veux mettre lesensorquejeveuxchangerparwebhook tu peux.

Avoir un unique_id te permet de pouvoir faire des changements (son nom, etc…) par UI d’un sensor créer par YAML

1 « J'aime »

Cela fonctionne à présent, encore un grand merci !! :slight_smile:

1 « J'aime »

N’hésite pas à tagger en Solution le message afin que les autres dans ton cas, puisse trouver plus vite la réponse dans le thread

1 « J'aime »

Hello

Ce n’est ni en BDD, ni en YAML, mais dans le répertoire caché .storage dans des fichiers json : WTH is the data in .storage not in the recorder database? - Month of "What the heck?!" 2022 - Home Assistant Community

2 « J'aime »

Ce sujet a été automatiquement fermé après 2 jours. Aucune réponse n’est permise dorénavant.