Automation bloquée sur une étape

Bonjour à tous,

Je viens tout juste de remarquer que l’automatisation qui gère mon système d’alarme ne se déroule pas jusqu’au bout si l’une des étapes ne peut pas se réaliser !

Je m’explique :
J’ai volontairement déconnecté l’accès à internet de ma box pour vérifier si mon système d’alarme s’active quand même lors d’une Intrusion. Et malheureusement non ! En faite mes capteurs et ma sirène fonctionnent avec le protocole zwave donc pas de soucis pour récupérer les changements d’états des déclencheurs et commander ma sirène même s’il n’y a pas d’accès à internet. Mais le problème c’est dans mon automatisation, avant le déclenchement de la sirène, j’ai des étapes qui nécessitent un accès à internet comme l’envoi de notifications pushbullet et visiblement le service tts.google_translate_say pour mon speaker aussi (il ne fonctionne pas sans accès à internet). J’ai l’impression que cela empêche le déroulement de mon automatisation et donc le déclenchement de la sirène… Ce qui est dommage car les capteurs et la sirène sont toujours joignable sans internet ? :frowning:

Avez-vous déjà rencontré un problème de ce genre ? Pensez-vous qu’il est possible de contourner une étape non réalisé d’une automatisation ?

A bientôt les homies.

Il va falloir partager ton automatisation si tu veux de l’aide.
Je suis sceptique sur le fait qu’une action qui a besoin d’Internet bloque le déroulement, mais voyons les détails des que tu nous en diras plus.

Bonsoir oncleben31,

Je me trompe peut être effectivement je débute sur home assistant… Néanmoins je te garantis que l’automation marche lorsque l’accès à internet est possible, et au contraire, ne fonctionne pas quand il n’y a pas d’accès.

La voici :

alias: Alarme d'intrusion
description: >-
  1) Alarme d'intrusion sur armed_home:

  Envoi d'une notification pushbullet si une porte ou une fenêtre s'ouvre au
  RDC. Si la portée d'entrée s'ouvre, un délai de 10 secondes s'active. Si après
  ce délai l'alarme n'est pas désarmée, la sirène se déclenche en boucle et une
  notification pushbullet est envoyée. N'importe quelle autres ouvertures de
  porte ou de fenêtre du RDC déclenchent la sirène d'alarme sans délai.

  2) Alarme d'intrusion sur armed_away:

  Même scénario que pour l'état armed_home + détection de mouvement au RDC. Si
  un mouvement est détecté, un délai de 10 secondes s'active. Si après ce délai,
  l'alarme n'est pas désarmée, la sirène se déclenche en boucle et une
  notification pushbullet est envoyée. 
trigger:
  - platform: state
    entity_id: binary_sensor.door_window_detector_sensor_4
    from: 'off'
    to: 'on'
  - platform: state
    entity_id: binary_sensor.door_window_detector_sensor_3
    from: 'off'
    to: 'on'
  - platform: state
    entity_id: binary_sensor.door_window_detector_sensor_2
    from: 'off'
    to: 'on'
  - platform: state
    from: 'off'
    to: 'on'
    entity_id: binary_sensor.door_window_detector_sensor
  - platform: state
    entity_id: >-
      binary_sensor.nas_pd02z_battery_powered_pir_sensor_v2_home_security_motion_detected
    from: 'off'
    to: 'on'
condition:
  - condition: or
    conditions:
      - condition: state
        entity_id: alarm_control_panel.alarme_ha
        state: armed_home
      - condition: state
        entity_id: alarm_control_panel.alarme_ha
        state: armed_away
action:
  - choose:
      - conditions:
          - condition: state
            entity_id: binary_sensor.door_window_detector_sensor_4
            state: 'on'
        sequence:
          - service: notify.pushbullet
            data:
              title: Avertissement
              message: La porte d'entrée est ouverte.
          - service: media_player.volume_set
            data:
              volume_level: 1
            entity_id: media_player.enceinte
          - service: tts.google_translate_say
            data:
              entity_id: media_player.enceinte
              message: L'alarme va se déclencher dans moins de dix secondes !
          - delay: '10'
          - choose:
              - conditions:
                  - condition: not
                    conditions:
                      - condition: state
                        entity_id: alarm_control_panel.alarme_ha
                        state: disarmed
                sequence:
                  - service: notify.pushbullet
                    data:
                      title: Intrusion détectée !
                      message: >-
                        L'alarme n'a pas été désarmée au bout de 10 secondes. La
                        sirène est déclenchée.
                  - service: script.sirene_dalarme_en_boucle_max
                    data: {}
            default: []
      - conditions:
          - condition: state
            entity_id: binary_sensor.door_window_detector_sensor_3
            state: 'on'
        sequence:
          - service: notify.pushbullet
            data:
              title: Intrusion détectée !
              message: La fenêtre de la cuisine est ouverte. La sirène est déclenchée.
          - service: script.sirene_dalarme_en_boucle_max
            data: {}
      - conditions:
          - condition: state
            entity_id: binary_sensor.door_window_detector_sensor_2
            state: 'on'
        sequence:
          - service: notify.pushbullet
            data:
              title: Intrusion détectée !
              message: >-
                La porte fenêtre de droite du salon est ouverte. La sirène est
                déclenchée.
          - service: script.sirene_dalarme_en_boucle_max
            data: {}
      - conditions:
          - condition: state
            entity_id: binary_sensor.door_window_detector_sensor
            state: 'on'
        sequence:
          - service: notify.pushbullet
            data:
              title: Intrusion détectée !
              message: >-
                La porte fenêtre de gauche du salon est ouverte. La sirène est
                déclenchée.
          - service: script.sirene_dalarme_en_boucle_max
            data: {}
      - conditions:
          - condition: state
            entity_id: >-
              binary_sensor.nas_pd02z_battery_powered_pir_sensor_v2_home_security_motion_detected
            state: 'on'
          - condition: state
            entity_id: alarm_control_panel.alarme_ha
            state: armed_away
        sequence:
          - service: notify.pushbullet
            data:
              title: Avertissement
              message: Un mouvement a été détecté dans le RDC.
          - service: media_player.volume_set
            data:
              volume_level: 1
            entity_id: media_player.enceinte
          - service: tts.google_translate_say
            data:
              entity_id: media_player.enceinte
              message: L'alarme va se déclencher dans moins de dix secondes !
          - delay: '10'
          - choose:
              - conditions:
                  - condition: not
                    conditions:
                      - condition: state
                        entity_id: alarm_control_panel.alarme_ha
                        state: disarmed
                sequence:
                  - service: notify.pushbullet
                    data:
                      title: Intrusion détectée !
                      message: >-
                        L'alarme n'a pas été désarmée au bout de 10 secondes. La
                        sirène est déclenchée.
                  - service: script.sirene_dalarme_en_boucle_max
                    data: {}
            default: []
    default: []
mode: parallel
max: 6

Fonctionnement normal des automatisations.
Si une action renvoi une erreur, les actions suivantes ne sont pas réalisées, ce qui est tout à fait normal d’un point de vue sécurité.

Tu pourrais peut être contourner ce problème par l’exécution de script (plutôt que les actions pures et durs dans l’automatisation) en prenant soin d’appeler les scripts de la manière suivante :

- service: script.turn_on
  entity_id: script.sirene_dalarme_en_boucle_max

(documentation)

Mais de toute façon, les services dont la connexion internet est nécessaire ne fonctionneront jamais sans connexion internet…


La seule solution de contournement, comprendre faire sonner ta sirène Zwave, est de réorganiser les actions, afin de mettre celles dépendantes d’internet en dernière position car si tu n’as pas internet, comme je l’ai dit (et comme tu l’a remarqué), les actions suivantes ne sont pas réalisées car l’action renvoie un code erreur (ERROR) que tu retrouves dans le log home-assistant.log.

Donc il faut que tes séquences commencent toutes par

service: script.sirene_dalarme_en_boucle_max

Sauf que pour le cas où tu avertis d’abord, je ne sais pas si l’automatisation va continuer si une action du script échoue…faut tenter ! :grin:

J’ai un peu remanier ton code, regarde avant de l’intégrer. J’ai mis en première position quand c’est possible l’action qui déclenche l’alarme (et ensuite les notifications) et pour les cas où tu avertis, j’appel des scripts qui comme l’indique la documentation ne devrait pas bloquer l’exécution des actions appelées. Pour ne pas créer un script par notification, je suis passé par des variables.

Prends le temps de l’étudier avant de l’intégrer :+1

edit: mise a jour suite à la remarque

automation:
  alias: Alarme d'intrusion
  description: >-
    1) Alarme d'intrusion sur armed_home:
  
    Envoi d'une notification pushbullet si une porte ou une fenêtre s'ouvre au
    RDC. Si la portée d'entrée s'ouvre, un délai de 10 secondes s'active. Si après
    ce délai l'alarme n'est pas désarmée, la sirène se déclenche en boucle et une
    notification pushbullet est envoyée. N'importe quelle autres ouvertures de
    porte ou de fenêtre du RDC déclenchent la sirène d'alarme sans délai.
  
    2) Alarme d'intrusion sur armed_away:
  
    Même scénario que pour l'état armed_home + détection de mouvement au RDC. Si
    un mouvement est détecté, un délai de 10 secondes s'active. Si après ce délai,
    l'alarme n'est pas désarmée, la sirène se déclenche en boucle et une
    notification pushbullet est envoyée. 
  trigger:
    - platform: state
      entity_id: binary_sensor.door_window_detector_sensor_4
      from: 'off'
      to: 'on'
    - platform: state
      entity_id: binary_sensor.door_window_detector_sensor_3
      from: 'off'
      to: 'on'
    - platform: state
      entity_id: binary_sensor.door_window_detector_sensor_2
      from: 'off'
      to: 'on'
    - platform: state
      from: 'off'
      to: 'on'
      entity_id: binary_sensor.door_window_detector_sensor
    - platform: state
      entity_id: >-
        binary_sensor.nas_pd02z_battery_powered_pir_sensor_v2_home_security_motion_detected
      from: 'off'
      to: 'on'
  condition:
    - condition: or
      conditions:
        - condition: state
          entity_id: alarm_control_panel.alarme_ha
          state: armed_home
        - condition: state
          entity_id: alarm_control_panel.alarme_ha
          state: armed_away
  action:
    - choose:
        - conditions:
            - condition: state
              entity_id: binary_sensor.door_window_detector_sensor_4
              state: 'on'
          sequence:
            - service: script.turn_on
              entity_id: script.alarme_notification
              data:
                titre: "Avertissement"
                message: "La porte d'entrée est ouverte."
            - service: script.turn_on
              entity_id: script.alarme_avertissement_enceinte
            - delay: '10'
            - choose:
                - conditions:
                    - condition: not
                      conditions:
                        - condition: state
                          entity_id: alarm_control_panel.alarme_ha
                          state: disarmed
                  sequence:
                    - service: script.turn_on
                      entity_id: script.sirene_dalarme_en_boucle_max
                    - service: script.turn_on
                      entity_id: script.alarme_notification
                      data:
                        titre: "Intrusion détectée !"
                        message: "L'alarme n'a pas été désarmée au bout de 10 secondes. La sirène est déclenchée."
              default: []
        - conditions:
            - condition: state
              entity_id: binary_sensor.door_window_detector_sensor_3
              state: 'on'
          sequence:
            - service: script.turn_on
              entity_id: script.sirene_dalarme_en_boucle_max
            - service: script.turn_on
              entity_id: script.alarme_notification
              data:
                titre: "Intrusion détectée !"
                message: "La fenêtre de la cuisine est ouverte. La sirène est déclenchée."
        - conditions:
            - condition: state
              entity_id: binary_sensor.door_window_detector_sensor_2
              state: 'on'
          sequence:
            - service: script.turn_on
              entity_id: script.sirene_dalarme_en_boucle_max
            - service: script.turn_on
              entity_id: script.alarme_notification
              data:
                titre: "Intrusion détectée !"
                message: "La porte fenêtre de droite du salon est ouverte. La sirène est déclenchée."
        - conditions:
            - condition: state
              entity_id: binary_sensor.door_window_detector_sensor
              state: 'on'
          sequence:
            - service: script.turn_on
              entity_id: script.sirene_dalarme_en_boucle_max
            - service: script.turn_on
              entity_id: script.alarme_notification
              data:
                titre: "Intrusion détectée !"
                message: "La porte fenêtre de gauche du salon est ouverte. La sirène est déclenchée."
        - conditions:
            - condition: state
              entity_id: >-
                binary_sensor.nas_pd02z_battery_powered_pir_sensor_v2_home_security_motion_detected
              state: 'on'
            - condition: state
              entity_id: alarm_control_panel.alarme_ha
              state: armed_away
          sequence:
            - service: script.turn_on
              entity_id: script.alarme_notification
              data:
                titre: "Avertissement"
                message: "La porte d'entrée est ouverte."
            - service: script.turn_on
              entity_id: script.alarme_avertissement_enceinte
            - delay: '10'
            - choose:
                - conditions:
                    - condition: not
                      conditions:
                        - condition: state
                          entity_id: alarm_control_panel.alarme_ha
                          state: disarmed
                  sequence:
                    - service: script.turn_on
                      entity_id: script.sirene_dalarme_en_boucle_max
                    - service: script.turn_on
                      entity_id: script.alarme_notification
                      data:
                        titre: "Intrusion détectée !"
                        message: "L'alarme n'a pas été désarmée au bout de 10 secondes. La sirène est déclenchée."
              default: []
      default: []
  mode: parallel
  max: 6
  
script:
  alarme_notification:
    description: "Envoi d'une  notification"
    fields:
      titre:
        description: "Le titre de la notification"
        example: "Avertissement"
      message:
        description: "Le message"
        example: "La porte d'entrée est ouverte."
    sequence:
      - service: notify.pushbullet
        data:
          title: "{{ title }}"
          message: "{{ message }}"
  alarme_avertissement_enceinte:
    sequence:
      - service: media_player.volume_set
        data:
          volume_level: 1
        entity_id: media_player.enceinte
      - service: tts.google_translate_say
        data:
          entity_id: media_player.enceinte
          message: "L'alarme va se déclencher dans moins de dix secondes !"
2 « J'aime »

J’ai vraiment envie de creuser ton cas.
Quelle action génère une erreur ? Arrives tu a déterminer à quelle étape le script est bloqué ?
As tu des erreurs dans les logs ?

Voici l’erreur associé à mon cas :

Logger: homeassistant.components.automation.test_alarme_d_intrusion
Source: components/pushbullet/notify.py:175
Integration: Automatisation (documentation, issues)
First occurred: 22:27:18 (3 occurrences)
Last logged: 22:27:18

Test - Alarme d'intrusion: Choose at step 1: choice 2: Error executing script. Unexpected error for call_service at pos 1: HTTPSConnectionPool(host='api.pushbullet.com', port=443): Max retries exceeded with url: /v2/pushes (Caused by NewConnectionError('<urllib3.connection.HTTPSConnection object at 0x7f9feda970>: Failed to establish a new connection: [Errno -3] Try again'))
Test - Alarme d'intrusion: Error executing script. Unexpected error for choose at pos 1: HTTPSConnectionPool(host='api.pushbullet.com', port=443): Max retries exceeded with url: /v2/pushes (Caused by NewConnectionError('<urllib3.connection.HTTPSConnection object at 0x7f9feda970>: Failed to establish a new connection: [Errno -3] Try again'))
While executing automation automation.test_alarme_d_intrusion
Traceback (most recent call last):
  File "/usr/local/lib/python3.8/site-packages/urllib3/connection.py", line 169, in _new_conn
    conn = connection.create_connection(
  File "/usr/local/lib/python3.8/site-packages/urllib3/util/connection.py", line 73, in create_connection
    for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM):
  File "/usr/local/lib/python3.8/socket.py", line 918, in getaddrinfo
    for res in _socket.getaddrinfo(host, port, family, type, proto, flags):
socket.gaierror: [Errno -3] Try again

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/local/lib/python3.8/site-packages/urllib3/connectionpool.py", line 699, in urlopen
    httplib_response = self._make_request(
  File "/usr/local/lib/python3.8/site-packages/urllib3/connectionpool.py", line 382, in _make_request
    self._validate_conn(conn)
  File "/usr/local/lib/python3.8/site-packages/urllib3/connectionpool.py", line 1010, in _validate_conn
    conn.connect()
  File "/usr/local/lib/python3.8/site-packages/urllib3/connection.py", line 353, in connect
    conn = self._new_conn()
  File "/usr/local/lib/python3.8/site-packages/urllib3/connection.py", line 181, in _new_conn
    raise NewConnectionError(
urllib3.exceptions.NewConnectionError: <urllib3.connection.HTTPSConnection object at 0x7f9feda970>: Failed to establish a new connection: [Errno -3] Try again

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/local/lib/python3.8/site-packages/requests/adapters.py", line 439, in send
    resp = conn.urlopen(
  File "/usr/local/lib/python3.8/site-packages/urllib3/connectionpool.py", line 755, in urlopen
    retries = retries.increment(
  File "/usr/local/lib/python3.8/site-packages/urllib3/util/retry.py", line 573, in increment
    raise MaxRetryError(_pool, url, error or ResponseError(cause))
urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='api.pushbullet.com', port=443): Max retries exceeded with url: /v2/pushes (Caused by NewConnectionError('<urllib3.connection.HTTPSConnection object at 0x7f9feda970>: Failed to establish a new connection: [Errno -3] Try again'))

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/helpers/script.py", line 250, in _async_step
    await getattr(
  File "/usr/src/homeassistant/homeassistant/helpers/script.py", line 457, in _async_call_service_step
    await service_task
  File "/usr/src/homeassistant/homeassistant/core.py", line 1445, in async_call
    task.result()
  File "/usr/src/homeassistant/homeassistant/core.py", line 1480, in _execute_service
    await handler.job.target(service_call)
  File "/usr/src/homeassistant/homeassistant/components/notify/__init__.py", line 149, in _async_notify_message_service
    await self.async_send_message(**kwargs)
  File "/usr/src/homeassistant/homeassistant/components/notify/__init__.py", line 128, in async_send_message
    await self.hass.async_add_executor_job(partial(self.send_message, message, **kwargs))  # type: ignore
  File "/usr/local/lib/python3.8/concurrent/futures/thread.py", line 57, in run
    result = self.fn(*self.args, **self.kwargs)
  File "/usr/src/homeassistant/homeassistant/components/pushbullet/notify.py", line 83, in send_message
    self._push_data(message, title, data, self.pushbullet)
  File "/usr/src/homeassistant/homeassistant/components/pushbullet/notify.py", line 175, in _push_data
    pusher.push_note(title, message, **email_kwargs)
  File "/usr/local/lib/python3.8/site-packages/pushbullet/pushbullet.py", line 286, in push_note
    return self._push(data)
  File "/usr/local/lib/python3.8/site-packages/pushbullet/pushbullet.py", line 304, in _push
    r = self._session.post(self.PUSH_URL, data=json.dumps(data))
  File "/usr/local/lib/python3.8/site-packages/requests/sessions.py", line 590, in post
    return self.request('POST', url, data=data, json=json, **kwargs)
  File "/usr/local/lib/python3.8/site-packages/requests/sessions.py", line 542, in request
    resp = self.send(prep, **send_kwargs)
  File "/usr/local/lib/python3.8/site-packages/requests/sessions.py", line 655, in send
    r = adapter.send(request, **kwargs)
  File "/usr/local/lib/python3.8/site-packages/requests/adapters.py", line 516, in send
    raise ConnectionError(e, request=request)
requests.exceptions.ConnectionError: HTTPSConnectionPool(host='api.pushbullet.com', port=443): Max retries exceeded with url: /v2/pushes (Caused by NewConnectionError('<urllib3.connection.HTTPSConnection object at 0x7f9feda970>: Failed to establish a new connection: [Errno -3] Try again'))

Après modification des étapes de l’automatisation : j’ai fait passé le déclenchement de la sirène avant l’envoi de notificagion pushbullet et là, ça a marcher.

Conclusion : une action qui ne peut pas s’effectuer bloque les actions qui là suivent dans une automatisation ! @Clemalex a raison. Je vais corriger au mieux mon automatisation pour prioriser les étapes critiques.

Merci @Clemalex je vais m’inspirer du code que t’as remanié pour recoder l’automatisation avec priorisation des étapes et surtout l’utilisation de script.

J’ai une question, tu m’a préconisé d’appeler mes scripts de cette manière :

- service: script.turn_on
  entity_id: script.sirene_dalarme_en_boucle_max

Mais dans le code que tu as remanié tu n’appelles pas le script alarme_notification a l’aide de script.turn_on pour quelle raison ?

1 « J'aime »

:hushed: :scream: :disappointed:

Parce qu’il était tard ! :sleeping:

Je viens de le mettre à jour :+1:             :point_up:

Tiens nous au courant…(aujourd’hui je suis plus confiant, je pense que ça va le faire :crossed_fingers:)

1 « J'aime »

Ca me semble pas normal ce comportement. A minima pushbullet devrait gérer le cas et ne pas remonter une exception qui stoppe tout. Je vais creuser.

1 « J'aime »

Ok et bien on se tient tous au courant de la suite des évènements !
Bonne nuit à vous :+1:

Bonsoir bonsoir !

@Clemalex j’ai eu un soucis avec le script.alarme_notification en faite il ne fonctionne pas chez moi…

Voici le script :

alias: Notification pushbullet envoyée par l'alarme intrusion
description: Envoi d'une  notification
fields:
  titre:
    description: Le titre de la notification
    example: Avertissement
  message:
    description: Le contenu du message
    example: La porte d'entrée est ouverte.
sequence:
  - service: notify.pushbullet
    data:
      title: '{{ titre }}'
      message: '{{ message }}'
mode: single

J’ai essayé de le faire fonctionner à l’aide de l’outil de développement, puis d’un script mais rien n’y fait :

alias: Test
sequence:
  - service: script.turn_on
    entity_id: script.alarme_notification
    data:
      titre: Notification de test
      message: Ceci est un test
mode: single

Le script ne s’exécute pas et me renvoi : Échec d'appel du service script/test. extra keys not allowed @ data ['titre']
:frowning:

Je regarde dès que je peux :+1:

Edit:

Après un bon café…il manque la clé variables dans le code d’où l’erreur…

Voici le code corrigé (j’ai ajouté le formatage gras pour le titre et italique pour le contenu du message) :

automation:
  alias: Alarme d'intrusion
  description: >-
    1) Alarme d'intrusion sur armed_home:
  
    Envoi d'une notification pushbullet si une porte ou une fenêtre s'ouvre au
    RDC. Si la portée d'entrée s'ouvre, un délai de 10 secondes s'active. Si après
    ce délai l'alarme n'est pas désarmée, la sirène se déclenche en boucle et une
    notification pushbullet est envoyée. N'importe quelle autres ouvertures de
    porte ou de fenêtre du RDC déclenchent la sirène d'alarme sans délai.
  
    2) Alarme d'intrusion sur armed_away:
  
    Même scénario que pour l'état armed_home + détection de mouvement au RDC. Si
    un mouvement est détecté, un délai de 10 secondes s'active. Si après ce délai,
    l'alarme n'est pas désarmée, la sirène se déclenche en boucle et une
    notification pushbullet est envoyée. 
  trigger:
    - platform: state
      entity_id: binary_sensor.door_window_detector_sensor_4
      from: 'off'
      to: 'on'
    - platform: state
      entity_id: binary_sensor.door_window_detector_sensor_3
      from: 'off'
      to: 'on'
    - platform: state
      entity_id: binary_sensor.door_window_detector_sensor_2
      from: 'off'
      to: 'on'
    - platform: state
      from: 'off'
      to: 'on'
      entity_id: binary_sensor.door_window_detector_sensor
    - platform: state
      entity_id: >-
        binary_sensor.nas_pd02z_battery_powered_pir_sensor_v2_home_security_motion_detected
      from: 'off'
      to: 'on'
  condition:
    - condition: or
      conditions:
        - condition: state
          entity_id: alarm_control_panel.alarme_ha
          state: armed_home
        - condition: state
          entity_id: alarm_control_panel.alarme_ha
          state: armed_away
  action:
    - choose:
        - conditions:
            - condition: state
              entity_id: binary_sensor.door_window_detector_sensor_4
              state: 'on'
          sequence:
            - service: script.turn_on
              entity_id: script.alarme_notification
              data:
                variables:
                  titre: "Avertissement"
                  message: "La porte d'entrée est ouverte."
            - service: script.turn_on
              entity_id: script.alarme_avertissement_enceinte
            - delay: '10'
            - choose:
                - conditions:
                    - condition: not
                      conditions:
                        - condition: state
                          entity_id: alarm_control_panel.alarme_ha
                          state: disarmed
                  sequence:
                    - service: script.turn_on
                      entity_id: script.sirene_dalarme_en_boucle_max
                    - service: script.turn_on
                      entity_id: script.alarme_notification
                      data:
                        variables:
                          titre: "Intrusion détectée !"
                          message: "L'alarme n'a pas été désarmée au bout de 10 secondes. La sirène est déclenchée."
              default: []
        - conditions:
            - condition: state
              entity_id: binary_sensor.door_window_detector_sensor_3
              state: 'on'
          sequence:
            - service: script.turn_on
              entity_id: script.sirene_dalarme_en_boucle_max
            - service: script.turn_on
              entity_id: script.alarme_notification
              data:
                variables:
                  titre: "Intrusion détectée !"
                  message: "La fenêtre de la cuisine est ouverte. La sirène est déclenchée."
        - conditions:
            - condition: state
              entity_id: binary_sensor.door_window_detector_sensor_2
              state: 'on'
          sequence:
            - service: script.turn_on
              entity_id: script.sirene_dalarme_en_boucle_max
            - service: script.turn_on
              entity_id: script.alarme_notification
              data:
                variables:
                  titre: "Intrusion détectée !"
                  message: "La porte fenêtre de droite du salon est ouverte. La sirène est déclenchée."
        - conditions:
            - condition: state
              entity_id: binary_sensor.door_window_detector_sensor
              state: 'on'
          sequence:
            - service: script.turn_on
              entity_id: script.sirene_dalarme_en_boucle_max
            - service: script.turn_on
              entity_id: script.alarme_notification
              data:
                variables:
                  titre: "Intrusion détectée !"
                  message: "La porte fenêtre de gauche du salon est ouverte. La sirène est déclenchée."
        - conditions:
            - condition: state
              entity_id: >-
                binary_sensor.nas_pd02z_battery_powered_pir_sensor_v2_home_security_motion_detected
              state: 'on'
            - condition: state
              entity_id: alarm_control_panel.alarme_ha
              state: armed_away
          sequence:
            - service: script.turn_on
              entity_id: script.alarme_notification
              data:
                variables:
                  titre: "Avertissement"
                  message: "La porte d'entrée est ouverte."
            - service: script.turn_on
              entity_id: script.alarme_avertissement_enceinte
            - delay: '10'
            - choose:
                - conditions:
                    - condition: not
                      conditions:
                        - condition: state
                          entity_id: alarm_control_panel.alarme_ha
                          state: disarmed
                  sequence:
                    - service: script.turn_on
                      entity_id: script.sirene_dalarme_en_boucle_max
                    - service: script.turn_on
                      entity_id: script.alarme_notification
                      data:
                        variables:
                          titre: "Intrusion détectée !"
                          message: "L'alarme n'a pas été désarmée au bout de 10 secondes. La sirène est déclenchée."
              default: []
      default: []
  mode: parallel
  max: 6
  
script:
  alarme_notification:
    description: "Envoi d'une  notification"
    fields:
      titre:
        description: "Le titre de la notification"
        example: "Avertissement"
      message:
        description: "Le message"
        example: "La porte d'entrée est ouverte."
    sequence:
      - service: notify.pushbullet
        data:
          title: "*{{ title }}*"
          message: "_{{ message }}_"
  alarme_avertissement_enceinte:
    sequence:
      - service: media_player.volume_set
        data:
          volume_level: 1
        entity_id: media_player.enceinte
      - service: tts.google_translate_say
        data:
          entity_id: media_player.enceinte
          message: "L'alarme va se déclencher dans moins de dix secondes !"
1 « J'aime »

Merci @Clemalex. Le script alarme_notification fonctionne à présent.

Du coup j’ai pu tester la nouvelle automatisation d’alarme intrusion avec toutes les recommandations que tu m’as donné @Clemalex et résultat ça marche ! Même lorsque mon Raspberry n’est plus connecté à ma box et donc à internet, l’automatisation se déroule quand même en mode « local ». C’est à dire que, toutes les actions qui nécessitent une connexion internet, ne sont pas réalisées (dans mon cas : du tts vers mon speaker et des envoies de notif pushbullet). Mais sans pour autant faire planter l’automatisation.

A noter : au retour de la connexion internet, je reçois une notification pushbullet tardive.

L’automatisation en question :

  alias: Test - Alarme d'intrusion
  description: '1) Alarme d''intrusion sur armed_home:

    Envoi d''une notification pushbullet si une porte ou une fenêtre s''ouvre au RDC.
    Si la portée d''entrée s''ouvre, un délai de 10 secondes s''active. Si après ce
    délai l''alarme n''est pas désarmée, la sirène se déclenche en boucle et une notification
    pushbullet est envoyée. N''importe quelle autres ouvertures de porte ou de fenêtre
    du RDC déclenchent la sirène d''alarme sans délai.

    2) Alarme d''intrusion sur armed_away:

    Même scénario que pour l''état armed_home + détection de mouvement au RDC. Si
    un mouvement est détecté, un délai de 10 secondes s''active. Si après ce délai,
    l''alarme n''est pas désarmée, la sirène se déclenche en boucle et une notification
    pushbullet est envoyée. '
  trigger:
  - platform: state
    entity_id: binary_sensor.door_window_detector_sensor_4
    from: 'off'
    to: 'on'
  - platform: state
    entity_id: binary_sensor.door_window_detector_sensor_3
    from: 'off'
    to: 'on'
  - platform: state
    entity_id: binary_sensor.door_window_detector_sensor_2
    from: 'off'
    to: 'on'
  - platform: state
    from: 'off'
    to: 'on'
    entity_id: binary_sensor.door_window_detector_sensor
  - platform: state
    entity_id: binary_sensor.door_window_detector_sensor_5
    from: 'off'
    to: 'on'
  - platform: state
    entity_id: binary_sensor.nas_pd02z_battery_powered_pir_sensor_v2_home_security_motion_detected
    from: 'off'
    to: 'on'
  condition:
  - condition: or
    conditions:
    - condition: state
      entity_id: alarm_control_panel.alarme_ha
      state: armed_home
    - condition: state
      entity_id: alarm_control_panel.alarme_ha
      state: armed_away
  action:
  - choose:
    - conditions:
      - condition: state
        entity_id: binary_sensor.door_window_detector_sensor_4
        state: 'on'
      sequence:
      - service: script.turn_on
        data:
          variables:
            titre: Avertissement
            message: La porte d'entrée est ouverte.
        entity_id: script.alarme_notification
      - service: script.turn_on
        entity_id: script.avertissement_alarme_sur_enceinte_min
      - delay: '10'
      - choose:
        - conditions:
          - condition: not
            conditions:
            - condition: state
              entity_id: alarm_control_panel.alarme_ha
              state: disarmed
          sequence:
          - service: script.turn_on
            data: {}
            entity_id: script.sirene_dalarme_en_boucle_min
          - service: script.turn_on
            data:
              variables:
                titre: Intrusion détectée !
                message: L'alarme n'a pas été désarmée au bout de 10 secondes. La
                  sirène est déclenchée.
            entity_id: script.alarme_notification
        default: []
    - conditions:
      - condition: state
        entity_id: binary_sensor.door_window_detector_sensor_3
        state: 'on'
      sequence:
      - service: script.turn_on
        data: {}
        entity_id: script.sirene_dalarme_en_boucle_min
      - service: script.turn_on
        data:
          variables:
            titre: Intrusion détectée !
            message: La fenêtre de la cuisine est ouverte. La sirène est déclenchée.
        entity_id: script.alarme_notification
    - conditions:
      - condition: state
        entity_id: binary_sensor.door_window_detector_sensor_2
        state: 'on'
      sequence:
      - service: script.turn_on
        data: {}
        entity_id: script.sirene_dalarme_en_boucle_min
      - service: script.turn_on
        data:
          variables:
            titre: Intrusion détectée !
            message: La porte fenêtre de droite du salon est ouverte. La sirène est
              déclenchée.
        entity_id: script.alarme_notification
    - conditions:
      - condition: state
        entity_id: binary_sensor.door_window_detector_sensor
        state: 'on'
      sequence:
      - service: script.turn_on
        data: {}
        entity_id: script.sirene_dalarme_en_boucle_min
      - service: script.turn_on
        data:
          variables:
            titre: Intrusion détectée !
            message: La porte fenêtre de gauche du salon est ouverte. La sirène est
              déclenchée.
        entity_id: script.alarme_notification
    - conditions:
      - condition: state
        entity_id: binary_sensor.nas_pd02z_battery_powered_pir_sensor_v2_home_security_motion_detected
        state: 'on'
      - condition: state
        entity_id: alarm_control_panel.alarme_ha
        state: armed_away
      sequence:
      - service: script.turn_on
        data:
          variables:
            titre: Avertissement
            message: Un mouvement a été détecté dans le RDC.
        entity_id: script.alarme_notification
      - service: script.turn_on
        entity_id: script.avertissement_alarme_sur_enceinte_min
      - delay: '10'
      - choose:
        - conditions:
          - condition: not
            conditions:
            - condition: state
              entity_id: alarm_control_panel.alarme_ha
              state: disarmed
          sequence:
          - service: script.turn_on
            data: {}
            entity_id: script.sirene_dalarme_en_boucle_min
          - service: script.turn_on
            data:
              variables:
                titre: Intrusion détectée !
                message: L'alarme n'a pas été désarmée au bout de 10 secondes. La
                  sirène est déclenchée.
            entity_id: script.alarme_notification
        default: []
    - conditions:
      - condition: state
        entity_id: binary_sensor.door_window_detector_sensor_5
        state: 'on'
      sequence:
      - service: script.turn_on
        data: {}
        entity_id: script.sirene_dalarme_en_boucle_min
      - service: script.turn_on
        data:
          variables:
            titre: Intrusion détectée !
            message: La porte du garage est ouverte. La sirène est déclenchée.
        entity_id: script.alarme_notification
    default: []
  mode: parallel
  max: 6

J’ai eu la confirmation que c’était le comportement normal d’une automatisation. Ca me semblait pas si évident.

En revanche je pense que l’intégration pushbullet devrait mieux gérer ce cas d’erreur et ne pas laisser le système planter.

Il y a peut être une issue à ouvrir sur Github. Un volontaire ?

Merci @oncleben31 pour cette confirmation.

Effectivement oui il faudrait car c’est bel et bien la partie « envoi de notif pushbullet » qui fesait planter mon automatisation contrairement aux autres services comme tts.google_translate_say qui même s’il ne pouvait pas s’exécuter il ne fesait pas planter pour autant la suite de mon automatisation.