Come realizzare un tastierino numerico con OpenHASP per controllare il Manual Alarm Panel di Home Assistant

image
0
(0)

Introduzione

In questa guida vedremo come realizzare un keypad numerico touch con OpenHASP, da integrare in Home Assistant per controllare l’integrazione Manual Alarm Control Panel.

Il progetto consente di gestire l’attivazione e la disattivazione dell’allarme direttamente da un display, tramite codice numerico, con feedback visivo in tempo reale sullo stato del sistema.

Se vuoi confrontarti con altri utenti o approfondire OpenHASP, puoi unirti al gruppo Telegram non ufficiale di OpenHASP, dove la community condivide consigli, progetti e soluzioni ai problemi comuni.

Requisiti

Per completare il progetto servono:

  • Un dispositivo compatibile con OpenHASP (es. un display Nextion o simile).
  • Un’istanza Home Assistant con MQTT attivo.
  • L’integrazione Manual Alarm Control Panel configurata.
  • Un’entità di tipo input_text per memorizzare temporaneamente il codice (input_text.openhasp_code).

Layout dell’interfaccia (file JSONL)

Il layout del keypad viene definito tramite un file .jsonl, che descrive la disposizione e le proprietà degli oggetti su schermo.

Ecco un esempio completo del layout:

{"page":1,"id":1,"obj":"label","x":5,"y":2,"w":107,"h":23,"text_font":20,"text":"","mode":"crop","text_color":"black","bg_opa":0,"border_width":0} // Icona stato allarme
{"page":1,"id":2,"obj":"spinner","hidden":"true","x":10,"y":5,"w":30,"h":17,"bg_opa":0,"border_width":0,"line_width":1,"line_width10":2,"angle":120,"line_color":"black","line_color10":"yellow"} // Spinner attivazione allarme
{"page":1,"id":3,"obj":"label","x":106,"y":0,"w":107,"h":23,"text":"","align":"center","bg_color":"black","bg_opa":255,"radius":0,"border_side":0,"text_font":16} // Code
{"page":1,"id":4,"obj":"label","x":213,"y":0,"w":107,"h":23,"text":"HH:MM","align":"center","bg_color":"black","bg_opa":255,"radius":0,"border_side":0,"text_font":16} // Time
{"page":1,"id":5,"obj":"btnmatrix","x":0,"y":25,"w":320,"h":215,"text_font":24,"options":["1","2","3","\n","4","5","6","\n","7","8","9","\n","#FF0000 \uE156#","0","#00FF00  uE12C#"],"border_width40":2,"bg_color":"black","bg_grad_dir":0,"bg_opa40":255,"bg_color40":"black","bg_grad_dir40":0,"radius":0,"border_side":0,"toggle":0,"one_check":0}

L’ultima riga definisce la matrice dei pulsanti (il tastierino vero e proprio), con i tasti numerici, un tasto rosso per cancellare il codice inserito ed uno verde per confermare(Armare/Disarmare allarme).

Il risultato finale sarà simile a questo:

OpenHASP, Home Assistant, Manual Alarm Control Panel, Keypad, MQTT, Automazione, Allarme Domotica, Tastierino Touch

Configurazione YAML del dispositivo OpenHASP

Nel file di configurazione del dispositivo (plate_alarm.yaml), impostiamo i binding con Home Assistant per visualizzare:

  • L’orario corrente (sensor.time)
  • Lo stato dell’allarme (alarm_control_panel.home_alarm)
  • Lo spinner durante l’attivazione/disattivazione
plate_alarm:
  objects:
    - obj: "p1b4"
      properties:
        text: "{{ states('sensor.time') }}"

    - obj: "p1b1"
      properties:
        text: >-
          {% set s = states('alarm_control_panel.home_alarm') %}
          {% if s == 'disarmed' %}
            {{ '\uEFC6' }}
          {% elif s in ['armed_away', 'armed_home'] %}
            {{ '\uE99D' }}
          {% elif s in ['triggered'] %}
            {{ '\uE026' }}
          {% endif %}
        text_color: >-
          {% set s = states('alarm_control_panel.home_alarm') %}
          {% if s == 'disarmed' %}
            green
          {% elif s in ['armed_away', 'armed_home'] %}
            red
          {% elif s in ['triggered'] %}
            red
          {% endif %}
        hidden: >-
          {% set s = states('alarm_control_panel.home_alarm') %}
          {% if s in ['arming','pending'] %}
            true
          {% else %}
            false
          {% endif %}

    - obj: "p1b2"
      properties:
        hidden: >-
          {% set s = states('alarm_control_panel.home_alarm') %}
          {% if s in ['arming', 'pending'] %}
            false
          {% else %}
            true
          {% endif %}

Automazione su Home Assistant

L’automazione seguente gestisce gli input provenienti dal keypad tramite MQTT, aggiornando lo stato dell’allarme in base al codice inserito.

Crea un’automazione con il seguente YAML (ad esempio in automations.yaml):

alias: HASP Keypad Alarm
triggers:
  - topic: hasp/plate_alarm/state/p1b5
    trigger: mqtt
conditions:
  - condition: template
    value_template: "{{ payload_json.event == 'up' }}"
actions:
  - choose:
      - conditions:
          - condition: template
            value_template: "{{ val in clear_vals or key_label.lower() == 'c' }}"
        sequence:
          - target:
              entity_id: input_text.openhasp_code
            data:
              value: ""
            action: input_text.set_value
          - data:
              topic: hasp/plate_alarm/command/p1b3.text
              payload: "- - - -"
            action: mqtt.publish
      - conditions:
          - condition: template
            value_template: "{{ val in ok_vals or key_label.lower() == 'ok' }}"
        sequence:
          - target:
              entity_id: input_text.openhasp_code
            data:
              value: ""
            action: input_text.set_value
          - data:
              topic: hasp/plate_alarm/command/p1b3.text
              payload: "- - - -"
            action: mqtt.publish
          - choose:
              - conditions:
                  - condition: template
                    value_template: "{{ alarm_state == 'disarmed' }}"
                sequence:
                  - target:
                      entity_id: alarm_control_panel.home_alarm
                    data:
                      code: "{{ old_code }}"
                    action: alarm_control_panel.alarm_arm_away
              - conditions:
                  - condition: template
                    value_template: >-
                      {{ alarm_state in
                      ['armed_away','armed_home','armed_night','arming','pending','triggered'] }}
                sequence:
                  - target:
                      entity_id: alarm_control_panel.home_alarm
                    data:
                      code: "{{ old_code }}"
                    action: alarm_control_panel.alarm_disarm
    default:
      - target:
          entity_id: input_text.openhasp_code
        data:
          value: "{{ old_code ~ key_label }}"
        action: input_text.set_value
      - data:
          topic: hasp/plate_alarm/command/p1b3.text
          payload: "{{ old_code ~ key_label }}"
        action: mqtt.publish
      - delay: "00:00:03"
      - condition: template
        value_template: "{{ states('input_text.openhasp_code') != '' }}"
      - target:
          entity_id: input_text.openhasp_code
        data:
          value: ""
        action: input_text.set_value
      - data:
          topic: hasp/plate_alarm/command/p1b3.text
          payload: "- - - -"
        action: mqtt.publish
variables:
  payload_json: "{{ trigger.payload | from_json }}"
  val: "{{ payload_json.val | int }}"
  text: "{{ payload_json.text }}"
  key_label: >-
    {{ (payload_json.text.split(' ',1)[1] if ' ' in payload_json.text else payload_json.text).strip('#').strip() }}
  old_code: "{{ states('input_text.openhasp_code') }}"
  alarm_state: "{{ states('alarm_control_panel.home_alarm') }}"
  clear_vals:
    - 9
  ok_vals:
    - 11
mode: restart
description: ""

Funzionamento

  1. Ogni pressione di tasto sul keypad viene inviata tramite MQTT al topic hasp/plate_alarm/state/p1b5.
  2. L’automazione interpreta il valore (payload_json.val) e aggiorna il testo sul display.
  3. Il tasto rosso (clear) cancella il codice inserito.
  4. Il tasto verde (Spunta) invia il codice al Manual Alarm Panel:
    • Se l’allarme è disattivato → si arma.
    • Se è armato → si disarma.
  5. Lo stato viene aggiornato graficamente sul display (icona e spinner).

Conclusione

Con questa configurazione puoi controllare in modo elegante e touch-friendly l’allarme di Home Assistant direttamente dal tuo pannello OpenHASP.
Il sistema è facilmente espandibile: puoi aggiungere nuove pagine, modificare il layout o integrare feedback sonori per una maggiore interattività.


Se l’articolo Come realizzare un tastierino numerico con OpenHASP per controllare il Manual Alarm Panel di Home Assistant

Per non perderti i nuovi post entra nel canale Telegram

Se riscontri errori nell’articolo segnalalo tramite il modulo Contatti

Ti è stato utile questo post?

Clicca sulla stella per votare!

Voto medio 0 / 5. Numero voti: 0

Nessun voto finora! Sii il primo a valutare questo post.

We are sorry that this post was not useful for you!

Let us improve this post!

Tell us how we can improve this post?

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *