Personnaliser noms carte Alarm Control panel

System Health

version 2021.1.1
installation_type Home Assistant Container
dev false
hassio false
docker true
virtualenv false
python_version 3.8.7
os_name Linux
os_version 5.4.83-v7l+
arch armv7l
timezone Europe/Paris
Home Assistant Community Store
GitHub API ok
Github API Calls Remaining 4940
Installed Version 1.10.0
Stage running
Available Repositories 773
Installed Repositories 6
Home Assistant Cloud
logged_in false
can_reach_cert_server ok
can_reach_cloud_auth ok
can_reach_cloud ok
Lovelace
dashboards 1
mode storage
views 8
resources 4

*** HA 2021.1.1 on RPI4 4 GB under docker***

Personnaliser noms carte Alarm Control panel

Bonjour,

J’ai cherché l’info sur le forum mais je n’ai rien trouvé sur ce point.
Est-il possible de changer le nom des 4 états de l’alarm en les personnalisant ?

Voici ma configuration d’alarme dans le fichier configuration.yaml :

alarm_control_panel:
  - platform: manual
    name: Home Alarm
    arming_time: 0
    delay_time: 0
    trigger_time: 0
    disarmed:
      trigger_time: 0
    armed_home:
      arming_time: 0
      delay_time: 0

Du coup que Armer deviennent Armer Maison ou activer l’alarme…

De plus j’aurai aimé savoir à quoi correspondent les autres états décrits sur le site d’HA

arm_home
arm_away
arm_night
arm_custom_bypass

Merci d’avance pour vos retours !

Salut,

Alors je ne crois pas que l’on puisse changer les intitulés des états de l’entité alarm control panel : armed_home, armed_away, arming, disarmed, etc

Pourquoi souhaites-tu les modifier ? Pour que ce soit plus parlant à l’affichage de la carte ? Ne t’en fais pas, les noms des états sont bien plus parlant sur la carte.

En ce qui concerne les différents états tu peux t’en servir suivants tes besoins… Par exemple, moi je me sers seulement de deux états : armed_home et armed_away :

  • Pour l’un, je déclenche mon scénario d’alarme intrusion seulement si une porte ou bien une fenêtre s’ouvre au rdc. idéale quand on est présent dans la maison et qu’on veut pas que les détecteurs de mouvement déclenche l’alarme.

  • Pour l’autre, idem que plus haut, mais avec en plus des capteurs d’ouverture, un détecteur de mouvement qui déclenche l’alarme si un mouvement est repéré. idéale quand on est pas à la maison.

Après voilà avec tous ces états différents tu peux prévoir plusieurs scénarios de déclenchement d’alarme quoi… Moi je le vois comme ça.

A+

Hello @Heihachi31

Merci pour ton retour. Dans l’idée c’était surtout pour activer certaines caméras et pas d’autres comme celle de la piscine quand les enfants sont dehors et pas les autres, …

Après si tu veux bien me partager tes cartes je veux bien !

Voili voilou

Pour résumer ce qu’à dit @Heihachi31 :

  1. il utilise armed_home quand il est présent chez lui afin de déclencher l’alarme seulement sur les ouvertures sans prendre en compte les détecteurs de mouvements intérieur.
  2. il utilise armed_away quand il n’est pas chez lui, du coup en plus des détecteurs d’ouvertures , il a ajouté le déclenchement sur une détection de mouvement sur l’un de ses capteurs.
  3. armed_night et armed_custom_bypass peuvent également être utilisé.

Tu demandes la carte mais je pense que c’est plus les automatisations qui sont intéressantes car ce sont elles qui contiennent la liste des capteurs à prendre en compte pour déclencher l’alarme.

La configuration de la carte n’est pas insurmontable car elle contient très peu de configuration.

1 « J'aime »

Bonsoir,

@Clemalex tu as une capacité à synthétiser les choses, c’est clair et concis quand tu t’exprimes :+1:

@Nikos3296 la carte alarm control panel est vraiment simple à mettre en œuvre. Ce qui est intéressant c’est plutôt les automatisations associés aux états de l’alarm control panel.

Comme demandé je te met l’automatisation de mon alarme intrusion ci-dessus. Je débute sur HA, le code n’est sûrement pas optimisé mais en tout cas ça marche.
Actuellement mon système d’alarme est composé de 4 capteurs d’ouverture de porte/fenêtre, 1 détecteur de mouvement et 1 sirène d’alarme.
L’automatisation :

  alias: Alarme d'intrusion
  description:
    1) entité alarm control panel 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) entité alarm control panel 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: []
  action:
  - choose:
    - conditions:
      - condition: state
        entity_id: binary_sensor.door_window_detector_sensor_4
        state: 'on'
      - 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
      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: 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
          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'
      - 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
      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'
      - 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
      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: 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
      - 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: state
            entity_id: alarm_control_panel.alarme_ha
            state: armed_away
          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

A+

Je dirais qu’il a le mérite d’être compréhensible et facile à reproduire.

On peut toujours chercher à optimiser le code mais de nos jours, avec les ressources de nos machines je privilégie en 1er la maintenance et avoir un code compréhensible facilite la tâche.

Dans ton cas, où tu informe quel capteur est déclenché, il n’y a peu (voire pas) d’optimisation. :+1:

La seule que je vois comme ça c’est ce bloc qui pourrait au lieu d’être dans la clé choose pourrais être dans la clé condition (celui au même niveau que trigger et action) afin de gagner quelques lignes qui sont répétées…

- conditions:
      - 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
1 « J'aime »

@Clemalex oui c’est clair, le fonctionnement du code saute aux yeux en le lisant (même pour un novice comme moi) donc je préfère ça plutôt qu’un code hyper optimisé où j’y comprend pas les 3/4 :joy:

Ah ouais merci pour l’astuce ! Mais si je passe ces conditions dans la clé condition, ça veut dire que toutes les actions qui vont suivre dépendent de ces 2 conditions c’est bien ça? Exceptée l’action sur détection de mouvement au RDC car elle a sa propre condition : alarm_control_panel.alarme_ha sur armed_away

Le fait de mettre or signifie que les actions seront exécutés seulement si l’alarme est home ou away, oui :+1:

Les mettres un cran au dessus te donnera pour les actions :

  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: state
            entity_id: alarm_control_panel.alarme_ha
            state: armed_away
          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

Tu remarqueras l’utilisation de la condition not plutôt que or.

Ca reste tout aussi compréhensible je pense :+1:

1 « J'aime »

Merci beaucoup pour cette optimisation. Ça me permet d’apprendre de nouvelle condition (nottament le not). Je modifie ça ce week-end. Ca sera encore plus carré comme ça :smiley:

1 « J'aime »

Merci à tous pour vos explications.
Je sais qu’on peut personnaliser le tout grâce aux automatisations.
J’aurai juste aimé avoir une lecture claire des noms des alarmes pour que ma femme sache laquelle activer quand il le faut.
Merci et bonne soirée !

Après avec un peu d’expérience et de temps, tu peux largement arriver à quelque chose de sympa avec une combinaison de plusieurs cartes natives et l’utilisation du module card-mod et stack-in-card.

Par exemple, ceci :

Alors j’ai pas poussé loin la customisation (on perd le logo en haut à droite et la couleur de l’appui n’est pas customisée) mais il te suffit de remplacer alarm_control_panel.alarme_hacf par alarm_control_panel.<nom_de_ton_alarme> (:warning: le nom apparaît plusieurs fois)

Cliquer pour afficher le code de la carte
type: 'custom:stack-in-card'
title: Alarme
mode: vertical
cards:
  - type: conditional
    conditions:
      - entity: alarm_control_panel.alarme_hacf
        state: disarmed
    card:
      type: 'custom:mod-card'
      style: |
        ha-card {
          padding: 0 0 10px 0;
        }
      card:
        type: horizontal-stack
        cards:
          - type: button
            tap_action:
              action: call-service
              service: alarm_control_panel.alarm_arm_home
              service_data:
                entity_id: alarm_control_panel.alarme_hacf
            name: Présent
            hold_action:
              action: none
            style: >
              ha-card{ box-shadow:none; margin: 0px 5%;border:
              solid;border-color: var(--mdc-button-outline-color, rgba(0, 0, 0,
              0.12)) !important; border-width: var(--mdc-button-outline-width,
              1px) !important; border-radius: var(--mdc-shape-small, 4px)
              !important;  } ha-card > span{  color: var(--mdc-theme-primary,
              #6200ee);

              font-family: var(--mdc-typography-button-font-family,
              var(--mdc-typography-font-family, Roboto, sans-serif));

              font-size: var(--mdc-typography-button-font-size, 0.875rem);

              font-weight: var(--mdc-typography-button-font-weight, 500);

              letter-spacing: var(--mdc-typography-button-letter-spacing,
              0.0892857em);

              text-decoration: var(--mdc-typography-button-text-decoration,
              none);

              text-transform: var(--mdc-typography-button-text-transform,
              uppercase);

              }
          - type: button
            tap_action:
              action: call-service
              service: alarm_control_panel.alarm_arm_away
              service_data:
                entity_id: alarm_control_panel.alarme_hacf
            name: Absent
            hold_action:
              action: none
            style: >
              ha-card{box-shadow:none;  margin: 0px 5%;border:
              solid;border-color: var(--mdc-button-outline-color, rgba(0, 0, 0,
              0.12)) !important; border-width: var(--mdc-button-outline-width,
              1px) !important; border-radius: var(--mdc-shape-small, 4px)
              !important;  } ha-card > span{  color: var(--mdc-theme-primary,
              #6200ee);

              font-family: var(--mdc-typography-button-font-family,
              var(--mdc-typography-font-family, Roboto, sans-serif));

              font-size: var(--mdc-typography-button-font-size, 0.875rem);

              font-weight: var(--mdc-typography-button-font-weight, 500);

              letter-spacing: var(--mdc-typography-button-letter-spacing,
              0.0892857em);

              text-decoration: var(--mdc-typography-button-text-decoration,
              none);

              text-transform: var(--mdc-typography-button-text-transform,
              uppercase);

              }
          - type: button
            tap_action:
              action: call-service
              service: alarm_control_panel.alarm_arm_night
              service_data:
                entity_id: alarm_control_panel.alarme_hacf
            name: NUIT
            hold_action:
              action: none
            style: >
              ha-card{ box-shadow:none; margin: 0px 5%;border:
              solid;border-color: var(--mdc-button-outline-color, rgba(0, 0, 0,
              0.12)) !important; border-width: var(--mdc-button-outline-width,
              1px) !important; border-radius: var(--mdc-shape-small, 4px)
              !important;  } ha-card > span{  color: var(--mdc-theme-primary,
              #6200ee);

              font-family: var(--mdc-typography-button-font-family,
              var(--mdc-typography-font-family, Roboto, sans-serif));

              font-size: var(--mdc-typography-button-font-size, 0.875rem);

              font-weight: var(--mdc-typography-button-font-weight, 500);

              letter-spacing: var(--mdc-typography-button-letter-spacing,
              0.0892857em);

              text-decoration: var(--mdc-typography-button-text-decoration,
              none);

              text-transform: var(--mdc-typography-button-text-transform,
              uppercase);

              }
  - type: conditional
    conditions:
      - entity: alarm_control_panel.alarme_hacf
        state_not: disarmed
    card:
      type: alarm-panel
      states:
        - arm_home
        - arm_away
      entity: alarm_control_panel.alarme_hacf
      style: |
        .card-header{
          display: none;
        }
        ha-card > ha-label-badge{
        display: none;
        }
1 « J'aime »

Waaaaooooouuuuuu !!! Mais c’est génial !!!
C’est ça que je recherchais !!!
Trop fort @Clemalex !!!

Et du coup il faut faire comment pour retrouver le logo et la couleur de l’appui ?
J’ai essayé d’éditer le visualiseur de code de la carte de base mais ce n’est pas dedans…

image

Merci d’avance !!!

PI : je n’ai pas pu copier coller ton code car j’ai dû modifier et installer un autre module « custom » : vertical-stack-in-card

Oups ! C’est stack-in-card ! Je mets à jour mon post

1 « J'aime »

Pour la couleur de l’appui, c’est des propriétés css, pour le badge c’est plus compliqué et comme ça je vois pas (c’est possible, mais faudrait y passer quelques minutes/heures que je n’ai pas actuellement)

1 « J'aime »

Ok ça marche ! Après c’est peut-être possible sur le net de trouver le code original de la carte ?
Je vais chercher car CSS c’est pas du tout mon truc…
SI je trouve je posterai !
Bonne journée !

Bien sûr ! L’avantage du open source :heart_eyes:

:+1:

1 « J'aime »

Oui… Ben je n’y connais rien… Et malheureusement je n’ai pas trop le temps d’approfondir là dessus…

Après, si j’ai bien compris, le style c’est là que tu rentres ton code CSS ?
Et le style pour rajouter ce bouton doit être tout en bas du code (celui de la « grande carte ») ? Pas dans le style de chaque « card » ?

…ça dépend de là où tu veux ajouter une customisation…
:confused:

Oh ben comme sur ma capture d’écran. Là où il y l’icône originale !

Oui j’avais compris :+1:

Je répondais à cette question, le style tu peux l’utiliser partout…ça dépend ce que tu cible :wink:

1 « J'aime »