Home Assistant & Keypad

Notre serveur domotique préféré inclus un système de sécurité intrusion, communément appelé alarme. Attention, c'est du DIY, ça fait le job, mais ça ne répond pas aux normes en vigueur :

Les systèmes d'alarmes sont évalués en fonction de divers critères donnant lieu à l'attribution d'une certification appelée "norme alarme". En France, les alarmes sont certifiées par le CNPP, qui leur attribue des normes : NFA2P bouclier 1, NFA2P bouclier 2, NFA2P bouclier 3, suivant le degré de sécurité. Au niveau européen, il existe également une norme alarme : la norme EN 50131.

Ceci étant posé, rappelons de Home Assistant intègre un panneau d'alarme basic que l'intégration Alarmo vient avantageusement compléter, et dans l'absolu ça fait mieux que beaucoup de produit du marché.

Pour une bonne efficacité on part du principe que l'installation Home Assistant est fiable et secourue par un UPS.

Dans cet article je ne vais pas détailler le fonctionnement de cette alarme mais m'intéresser aux différentes façons de l'activer / désactiver :

  • Via l'application mobile : facile, mais fastidieux à l'usage. Tous les occupants ne disposent pas nécessairement de l'application mobile Home Assistant.
  • Avec un bouton ou une télécommande : facile, mais il faut transporter l'objet et les distribuer.
  • Avec un badge ou tag RFID sur un lecteur : lecteur esp32 à configurer, il faut transporter l'objet. Facile à distribuer et à révoquer.
  • Avec un badge et un téléphone mobile : facile et sécurisé, il faut enregistrer au préalable les mobiles qui devront disposer de l'application Home Assistant..
  • Avec un clavier numérique : le mode classique et universel, changement des codes faciles, encore faut t'il trouver un clavier, et c'est l'objet de cet article.

Un keypad Zigbee compatible

Il y a quelques jours j'ai vu passer une vidéo qui parle d'un kit alarme Linkind qui utlise Zigbee. Ce kit est composé d'une sirène qui est en fait un hub Zigbee qui se connecte au cloud du fabricant chinois pour gérer l'ensemble, d'un clavier et de quelques détecteurs. L'auteur de la vidéo à utilisé zigbee2mqtt et Node Red (je n'aime pas) pour l'intégrer à Home Assistant, moi je vais essayer de faire ça via ZHA.

J'ai commandé ce kit chez Amazon (28 €) en me disant qu'au pire ce serait un retour de plus, mon idée étant d'utiliser le clavier. Il y a des travaux en cours sur le Hub / Sirène mais c'est loin d'être aboutit. En ce qui concerne les capteurs il est possible de les associer via ZHA (ou z2m et Deconz).

Premier problème que je n'ai pas résolu, le code (1234 par défaut) qui se change via l'application du constructeur. Sauf que quand on l'intègre avec ZHA ça passe par un reset et on se retrouve avec le code par défaut. Bref un clavier avec comme code 1234 ça ne servirait pas à grand chose. Mais il y a une astuce, et la voici : (et une info à la fin de cet article)

Quand on entre une information sur le clavier, celle ci est envoyée à Home Assistant via ZHA (ça doit fonctionner à l'identique avec Deconz, sauf que pour l'instant il n'est pas reconnu) et on peut la récupérer via les "events". Voici un exemple si je saisit Disarm + 1234 + Valid sur ce clavier :

{
    "event_type": "zha_event",
    "data": {
        "device_ieee": "69:0a:x2:ff:fe:xa:x8:22",
        "unique_id": "69:0a:e2:xf:xe:xa:88:2x:1:0x05xx",
        "device_id": "c036fgqd qfdqs56hshs56shsdd06152267ab",
        "endpoint_id": 1,
        "cluster_id": 1281,
        "command": "arm",
        "args": {
            "arm_mode": 0,
            "arm_mode_description": "Disarm",
            "code": "1111",
            "zone_id": 0
        }
    },
    "origin": "LOCAL",
    "time_fired": "2022-02-21T23:27:45.169891+00:00",
    "context": {
        "id": "edada8770ddfd7045b1835acb0888bad",
        "parent_id": null,
        "user_id": null
    }
}

A partir de là il est facilement possible de traiter cette information dans une automation et de générer une action, ici un message :

automation:
- alias: Keypad Test
  description: 'Triggers an Event When code 1111 is entered into any keypad.
  trigger:
    - platform: event
      event_type: zha_event
      event_data:
        command: 'arm'
        args:
          arm_mode: 0
          arm_mode_description: 'Disarm'
          code: '1111'
          zone_id: 0
  condition: []
  action:
    - service: notify.slack_hass_canaletto
      data:
        message: "{{now().strftime('%d/%m/%Y, %H:%M:%S')}} > ENTER HOME | Code 1111 | State : {{ states.alarm_control_panel.alarmo.state }}"

Et là ou ça devient intéressant, c'est que l'on peut saisir n'importe quoi et que ça sera toujours remonté via un event. A partir de là on peu faire passer tous les codes possibles via 2 pseudos modes d’armement, voire même le disarm.

  • Arm_All_Zones
  • Arm_Day_Home_Only

Bon c’est un peu du bricolage… mais ça fait le taff. Dans la pratique, de base le désarmement demande le code enregistré dans le clavier (1234 par défaut) on peu armer les deux modes à la volée avec n'importe quel code, par exemple :

Touche Arm Home + 4444 + Valid va envoyer un event avec :

"args": {
            "arm_mode": 1,
            "arm_mode_description": "Arm_Day_Home_Only",
            "code": "4444",
            "zone_id": 0

Touche Arm Away + 5555 + Valid va envoyer un event avec :

"args": {
            "arm_mode": 3,
            "arm_mode_description": "Arm_All_Zones",
            "code": "5555",
            "zone_id": 0

A partir de là on interprète le code avec une automation et on lui fait faire ce que l’on veut très simplement.

automation:
  alias: Keypad Test
  description: 'Triggers an Event When code 1111 is entered into any keypad.'
  trigger:
    - platform: event
      event_type: zha_event
      event_data:
        command: 'arm'
        args:
          arm_mode: 0
          arm_mode_description: 'Disarm'
          code: '1111'
          zone_id: 0
  condition: []
  action:
  - service: alarm_control_panel.alarm_disarm
    data:
      code: !secret alarm_code
    entity_id: alarm_control_panel.alarmo
  - service: alarm_control_panel.alarm_disarm
    data:
      code: !secret alarm_code_visonic
    entity_id: alarm_control_panel.visonic_alarm
  - service: notify.slack_hass_canaletto
    data:
      message: "{{now().strftime('%d/%m/%Y, %H:%M:%S')}} > ENTER HOME | DISARM ALARM's | State : {{ states.alarm_control_panel.alarmo.state }}" 

Bonus

Rester appuyé 3 secondes sur SOS, ça active le Panel alarme Linkind dans HA et on peut traiter l'information.

Edit 05/07/2022

Je ne m'étais pas repenché sur la question de ce code 1234 par défaut depuis l'écriture de cet article. Mais Aurel RV a creusé un peu plus et à découvert par hasard que ZHA sait gérer ce code par défaut. Depuis quand je ne sais pas.

Le clavier étant vu comme un panneau de contrôle d'alarme, on pourra interagir avec Alarmo ou continuer à se servir des autres codes vie les events pour commander d'autres actions...

Conclusion

Ce résultat n'est pas totalement satisfaisant (mais qui le devient depuis que ZHA gère ce code), mais ça permet de faire passer les bons codes à Alarmo et c'est utilisable. De plus on peut utiliser d'autres codes pour déclencher d'autres actions, ouvrir un portail, allumer des projecteurs, etc....

 

 

 

 
 

 

 

Commentaires (7) -

  • Salut. Merci pour ton article. Sais-tu si ce keypad accepte des badges RFID pour déverrouiller l'alarme plutôt que de taper un code sur le clavier ?
    Je viens de domoticz et j'utilisais celui de zipato, mais il n'a pas l'air d'être compatible dans Home assistant... Je suis à la recherche d'un autre keypad mais c'est plus compliqué que ce que je pensais  (à part le ring 2 qui a l'air d'être bien supporté mais n'accepte pas de déverrouillage par Rfid/nfc)
    Merci
    • Et non, pas de RFID sur ce clavier. Mais je crois que ça existe, voir un montage à base d'ESP...
      • Finalement j'ai pas eu besoin d'acheter un nouveau keypad. J'ai inclus mon vieux zipato keypad et contre toute attente, il fonctionne sans rien faire avec Alarmo. Je pense que c'est parce que j'avais déjà inclus les tags rfid sous domoticz. Sinon je ne vois pas comment les inclure sous Home assistant, malgré tous les forums que j'ai parcourus. Au pire je retourneria temporairement sous domoticz si je dois ajouter un tag :-)
        • Aa
          Salut Sébastien,  peux tu expliquer ce que tu as fait je suis dans le même cas que toi , je suis passé de Domoticz à Ha mais le keypad zipato est bien vu mais je ne sais pas comment l'utiliser.et comment intégrer des badge Rfid si tu pouvais expliquer ta procédure.  Merci
          • Je pensais avoir trouvé mais non... Enfin oui et non. J'arrive à activer et désactiver l'alarme avec les rfid qui étaient pré enregistrés dans domoticz. Par contre toutes les huit heures le zipato envoie une demande d'activation de l'alarme sans que je comprenne pourquoi... C'est pour ça que je suis de retour sur cette page sinon j'aurais jamais vu ton message.
            En fait j'ai créé une automatisation dans home assistant :

            alias: "Alarme: Armer et désarmer avec Zipato Keypad"
            description: Set alarm armed or disarmed
            trigger:
              - platform: event
                event_type: zwave_js_notification
                event_data:
                  node_id: 8
                  event: 5
                id: Armed
              - platform: event
                event_type: zwave_js_notification
                id: Disarmed
                event_data:
                  node_id: 8
                  event: 6
            condition: []
            action:
              - choose:
                  - conditions:
                      - condition: trigger
                        id: Armed
                    sequence:
                      - service: alarmo.arm
                        data:
                          entity_id: alarm_control_panel.alarmo
                          mode: away
                          code: "xxxx"
                  - conditions:
                      - condition: trigger
                        id: Disarmed
                    sequence:
                      - service: alarmo.disarm
                        data:
                          entity_id: alarm_control_panel.alarmo
                          code: "xxxx"
                default: []
                enabled: true
            mode: single

            Le seul problème c'est que alarmo se met en mode away tout seul toutes les huit heures depuis une mise à jour de home assistant :
            Keypad fired Notification CC 'notification' event 'Access Control': 'Keypad lock operation'
            10:06:30 -

            Du coup c'est devenu inutilisable et je cherche une solution
            • Bonjour Sébastien, as-tu trouver une réponse depuis. Je cherche moi aussi à intégrer un zipato keypad avec homeassistant et plugin alarme. Merci
  • Salut,
    J'ai fini par changer de matériel, j'ai pris celui là
    https://www.zigbee2mqtt.io/devices/KEYZB-110.html
    J'ai du faire quelques scripts mais tout fonctionne bien

Ajouter un commentaire

Loading