Netatmo - Gestion des webhook

Bonjour,

C’est mon premier post, si ce n’est pas le bon endroit n’hésitez pas à me le dire. On apprend tout les jours

Ma question

Je continue l’intégration petit à petit, du contenu de mon Jeedom vers HA.
Je viens d’intégrer mes 3 cameras Netatmo (2 Presence et 1 Welcome). Tout fonctionne bien, j’ai le flux video ainsi que les webhooks.
C’est justement pour les webhook que je me pose une question, comme les gérer pour me faire un sensor.

Sur Jeedom, j’avais un « équipement » (sensor) qui pouvait me fournir le type de détection.
J’ai vu dans la doc que l’on reçoit un netatmo_event qui contient les informations qui me serait utile. Je me dit qu’avec la notion d’attribue, je pourrais avoir un sensor qui me retourne le type de detection (humain, voiture, animaux) et des attribut qui me donne des informations complémentaire comme la date de déclenchement, la camera, etc…

Partant de là, je me pose la question de comment gérer cet event. Je vois beaucoup d’automation qui prenne en trigger l’event, mais j’ai vu passer sur community (mais pas vraiment compris comment ca marche), le faire de déclarer un sensor qui prend en plateform un event.
Est-ce bien possible de faire ca ? Quelqu’un aurait un exemple ?

Bien sur si quelqu’un à une recommandation à me faire sur « la bonne façon » de le faire, je suis tout ouïe.

Merci d’avance

Ma configuration


System Information

version core-2023.4.5
installation_type Home Assistant Supervised
dev false
hassio true
docker true
user root
virtualenv false
python_version 3.10.10
os_name Linux
os_version 5.10.0-21-amd64
arch x86_64
timezone Europe/Paris
config_dir /config
Home Assistant Community Store
GitHub API ok
GitHub Content ok
GitHub Web ok
GitHub API Calls Remaining 4936
Installed Version 1.32.1
Stage running
Available Repositories 1269
Downloaded Repositories 4
Home Assistant Cloud
logged_in false
can_reach_cert_server ok
can_reach_cloud_auth ok
can_reach_cloud ok
Home Assistant Supervisor
host_os Debian GNU/Linux 11 (bullseye)
update_channel stable
supervisor_version supervisor-2023.04.0
agent_version 1.5.1
docker_version 23.0.4
disk_total 194.4 GB
disk_used 11.0 GB
healthy true
supported true
supervisor_api ok
version_api ok
installed_addons Studio Code Server (5.5.6), Samba Backup (5.2.0), AppDaemon (0.12.1)
Dashboards
dashboards 1
resources 1
views 5
mode storage
Recorder
oldest_recorder_run 21 avril 2023 à 08:15
current_recorder_run 24 avril 2023 à 18:00
estimated_db_size 5.64 MiB
database_engine sqlite
database_version 3.38.5
___
1 « J'aime »

Bonsoir,
De ce que je comprends, si tu as un accès extérieur tu peux créer une automatisation Netatmo - Home Assistant

Bonsoir,

Non justement. Je sais que l’on peut le faire par une automation (dans la doc) mais je voudrais savoir il on peut attraper une notification depuis un sensor directement pour avoir un sensor qui contiendra les informations qui m’interesse (et donc les garder en visu comme entité)
Puis ce sensor pourrait être un trigger d’une automation.

Je viens de tomber sur cela : Template - Home Assistant
Ca me semble prometteur. Qu’en pensez-vous ?

Mais en utilisant cela, est-ce que je peux ajouter des attributes à mon entité ?

Bonjour,

Après tests, ca marche. Si ca peut servir à d’autres :

Dans configuration.yaml :

template: !include_dir_merge_list includes/templates

Faire un fichier au nom que vous souhaitez dans includes/templates avec ce contenu :

---
# When receive netatmo_event, based on device who detect
# we store information in a binary_sensor including some
# attributes
#
# https://www.home-assistant.io/integrations/template/#turning-an-event-into-a-trigger-based-binary-sensor

- trigger:
    platform: event
    event_type: netatmo_event
    event_data:
      data:
        device_id: 00:11:22:33:44:55
  binary_sensor:
    - name: "Detection Mouvement Camera Salon"
      unique_id: e2c3c537-af8a-4847-9a65-a2fab3a1dac3
      device_class: motion
      state: "true"
      auto_off: 10
      attributes:
        type: >
          {% if trigger.event.data.data.event_type is defined %}
            {{ trigger.event.data.data.event_type }}
          {% endif %}
        message: >
          {% if trigger.event.data.data.message is defined %}
            {{ trigger.event.data.data.message }}
          {% endif %}
        time_fired: >
          {% if trigger.event.time_fired is defined %}
            {{ trigger.event.time_fired }}
          {% endif %}
        person_name: >
          {% if trigger.event.data.data.name is defined %}
            {{ trigger.event.data.data.name }}
          {% endif %}
        person_is_known: >
          {% if trigger.event.data.data.is_known is defined %}
            {{ trigger.event.data.data.is_known }}
          {% endif %}
        person_snapshot: >
          {% if trigger.event.data.data.snapshot_url is defined %}
            "{{ trigger.event.data.data.snapshot_url }}"
          {% endif %}

- trigger:
    platform: event
    event_type: netatmo_event
    event_data:
      data:
        device_id: 22:33:44:55:66
  binary_sensor:
    - name: "Detection Mouvement Camera Portail"
      unique_id: 7418b661-0fbd-4796-a74b-ff9a1306920f
      device_class: motion
      state: "true"
      auto_off: 10
      attributes:
        type: >
          {% if trigger.event.data.data.event_type is defined %}
            {{ trigger.event.data.data.event_type }}
          {% endif %}
        message: >
          {% if trigger.event.data.data.message is defined %}
            {{ trigger.event.data.data.message }}
          {% endif %}
        time_fired: >
          {% if trigger.event.time_fired is defined %}
            {{ trigger.event.time_fired }}
          {% endif %}

- trigger:
    platform: event
    event_type: netatmo_event
    event_data:
      data:
        device_id: 70:ee:50:85:42:78
  binary_sensor:
    - name: "Detection Mouvement Camera Terrasse"
      unique_id: 4bdd1bf4-cd27-4292-980a-6cbf4cafcd6e
      device_class: motion
      state: "true"
      auto_off: 10
      attributes:
        type: >
          {% if trigger.event.data.data.event_type is defined %}
            {{ trigger.event.data.data.event_type }}
          {% endif %}
        message: >
          {% if trigger.event.data.data.message is defined %}
            {{ trigger.event.data.data.message }}
          {% endif %}
        time_fired: >
          {% if trigger.event.time_fired is defined %}
            {{ trigger.event.time_fired }}
          {% endif %}

En prenant soins de remplacer les event_data.data.device_id par les valeurs correspondantes à vos cameras netatmo.
La première cam est un Welcome et les autres des Presence

2 « J'aime »

Bonjour

a quoi correspond unique_id ? faut il creer un dossier includes ?

Loïc

Bonjour,

Le unique_id est une référence unique nécessaire pour éditer l’entité par la GUI pour lui changer son nom, son entity_id ou bien son icône.

Tu peux techniquement mettre ce que tu veux, tant que c’est unique.
Moi je met des UUID généré par VS code

Pour le dossier include c’est comme ça qu’il s’appelle chez moi mais tu peux mettre ce que tu veux tant que tu mets le chemin que tu as fais dans l’include

Bonjour

merci mais je bloque

J’ai mis en place le fichier (j’ai remplace les mac-adresse). J’utilise netatmo cloud (pas homekit). J’ai cree une application sur dev.netatmo.com

J’ai bien un sensor qui est present mais reste en inconnu

sensor

Aurais je loupe un truc ?

Bonjour,

Il est surprenant qu’il reste en inconnu alors qu’il a un auto-off actif a 10 secondes.
Mais sans le code YAML je peux pas aider. Ni sans logs d’ailleurs.
Tu devrais avoir dans les logs Core un log de ce type au démarrage de HA :

2023-05-03 14:08:05.923 INFO (MainThread) [homeassistant.components.netatmo.data_handler] Netatmo webhook successfully registered

Déjà reçois-tu les events ? Si tu écoute les event dans Outils de developpement → Evenement


et que tu déclenche une detection, tu la reçois ?

Effectivement j’ai l’erreur suivante

c’est pas bon signe. Que dois je faire ?

j’ai bien acces de l’exterieur sur le port 443

je me réponds

j’ai corrigé l’acces dans systme/reseau en ajutant mon dns

l’erreur a disparu mais ca change rien

je scrute les logs

j’ai plus d’erreur dans le log mais pas de trace de webhook registered

mon fichier eedomus.yaml sous includes/templates

- trigger:
    platform: event
    event_type: netatmo_event
    event_data:
      data:
        device_id: 70:ee:XX:XX:XX:XX 
  binary_sensor:
    - name: "Detection Mouvement Camera Salon"
      unique_id: e2c3c537-af8a-4847-9a65-a2fab3a1dac3
      device_class: motion
      state: "true"
      auto_off: 10
      attributes:
        type: >
          {% if trigger.event.data.data.event_type is defined %}
            {{ trigger.event.data.data.event_type }}
          {% endif %}
        message: >
          {% if trigger.event.data.data.message is defined %}
            {{ trigger.event.data.data.message }}
          {% endif %}
        time_fired: >
          {% if trigger.event.time_fired is defined %}
            {{ trigger.event.time_fired }}
          {% endif %}
        person_name: >
          {% if trigger.event.data.data.name is defined %}
            {{ trigger.event.data.data.name }}
          {% endif %}
        person_is_known: >
          {% if trigger.event.data.data.is_known is defined %}
            {{ trigger.event.data.data.is_known }}
          {% endif %}
        person_snapshot: >
          {% if trigger.event.data.data.snapshot_url is defined %}
            "{{ trigger.event.data.data.snapshot_url }}"
          {% endif %}

- trigger:
    platform: event
    event_type: netatmo_event
    event_data:
      data:
        device_id: 70:ee:XX:XX:XX:XX
  binary_sensor:
    - name: "Detection Mouvement Camera Portail"
      unique_id: 7418b661-0fbd-4796-a74b-ff9a1306920f
      device_class: motion
      state: "true"
      auto_off: 10
      attributes:
        type: >
          {% if trigger.event.data.data.event_type is defined %}
            {{ trigger.event.data.data.event_type }}
          {% endif %}
        message: >
          {% if trigger.event.data.data.message is defined %}
            {{ trigger.event.data.data.message }}
          {% endif %}
        time_fired: >
          {% if trigger.event.time_fired is defined %}
            {{ trigger.event.time_fired }}
          {% endif %}


et dans mon fichier de configuration.yaml

j’ai jouté la ligne

template: !include_dir_merge_list includes/templates

Tu as un service pour forcer l’activation du webhook. Recherche netatmo.
Si ton webhook est déjà actif, il te le diras. Sinon il l’activera.
Comme tu as corrigé ton dns, je pense que l’activation devrais résoudre. Il te faudra peut être faire avant une désactivation du webhook pour le forcer

Bonsoir

J’ai lancé
service: netatmo.unregister_webhook
Et
service: netatmo.register_webhook

Plus qu’à attendre

Active l’écoute d’évènement comme je t’ai dis plus haut et déclenche une détection de mouvement

Toujours rien, c’est a rien n’y comprendre, je tourne en rond et je manque d’idée ou j’ai rien compris

Bonjour,

Malheureusement comme tu ne partage aucuns logs, n’étant pas devant ton HA je ne sais pas quoi te conseiller.

Dans les logs tu as bien eu une confirmation quand tu as fais le register du webhook ? Si oui, et seulement à partir de la, à tu tester dans les outils de dev si tu recevais les webhook ? pour identifier si c’est pas les entités qui pose souci

Bonjour

pas grand chose de le log home-assistant.log
j’ai remplace mon dns par xxx.com

2023-05-04 10:15:02.423 WARNING (SyncWorker_2) [homeassistant.loader] We found a custom integration hacs which has not been tested by Home Assistant. This component might cause stability problems, be sure to disable it if you experience issues with Home Assistant
2023-05-04 10:15:02.431 WARNING (SyncWorker_2) [homeassistant.loader] We found a custom integration pyscript which has not been tested by Home Assistant. This component might cause stability problems, be sure to disable it if you experience issues with Home Assistant
2023-05-04 10:15:02.442 WARNING (SyncWorker_2) [homeassistant.loader] We found a custom integration alarmo which has not been tested by Home Assistant. This component might cause stability problems, be sure to disable it if you experience issues with Home Assistant
2023-05-04 10:15:44.868 WARNING (MainThread) [homeassistant.config_entries] Config entry 'Hue Bridge 0017886d85bc' for hue integration not ready yet: Error connecting to the Hue bridge at 192.168.5.9; Retrying in background
2023-05-04 10:15:47.076 DEBUG (MainThread) [homeassistant.components.netatmo.data_handler] Publisher account added
2023-05-04 10:15:47.738 DEBUG (MainThread) [homeassistant.components.netatmo.data_handler] Publisher weather added
2023-05-04 10:15:47.794 DEBUG (MainThread) [homeassistant.components.netatmo.data_handler] No device data available
2023-05-04 10:15:47.795 DEBUG (MainThread) [homeassistant.components.netatmo.data_handler] Publisher air_care added
2023-05-04 10:15:51.693 DEBUG (MainThread) [homeassistant.components.netatmo.data_handler] Publisher home-5b27e1550f21e1d4058b72bf added
2023-05-04 10:15:51.695 DEBUG (MainThread) [homeassistant.components.netatmo.data_handler] Publisher weather removed
2023-05-04 10:15:51.695 DEBUG (MainThread) [homeassistant.components.netatmo.data_handler] Publisher air_care removed
2023-05-04 10:15:51.934 DEBUG (MainThread) [homeassistant.components.netatmo.data_handler] Publisher event-5b27e1550f21e1d4058b72bf added
2023-05-04 10:15:51.982 DEBUG (MainThread) [homeassistant.components.netatmo.data_handler] Publisher weather added
2023-05-04 10:15:52.118 INFO (MainThread) [homeassistant.components.netatmo] Register Netatmo webhook: https://xxxx.com/api/webhook/7be293b1075e8755f924ed31eccc0f55179696212749964a4695cd5b91b26a03
2023-05-04 10:15:53.873 ERROR (MainThread) [homeassistant] Error doing job: Unclosed client session
2023-05-04 10:15:54.823 ERROR (MainThread) [homeassistant] Error doing job: Unclosed connector

Y’a t’il un autre log qui pourrait aider ? je debute en HA donc pas forcement l’habitude, je viens du monde eedomus

Le webhook semble actif.
Tu reçois des événements quand tu les mets en écoute dans les outils de développement ?