Possiamo creare un sistema di allarme con Home Assistant organizzandolo secondo le nostre esigenze, adoperando diversi sensori ed attuatori

Vediamo come realizzare un sistema di allarme personalizzato con Home Assistant, adoperando alcuni sensori ed attuatori per controllare e gestire la nostra casa, rendendola un po’ più sicura ed a prova di ladro. Questa guida vi mostrerà come realizzare un sistema di allarme con alcuni dei dispositivi più presenti in commercio, sfruttando quasi completamente la rete Zigbee.

Componenti

L’allarme è costituito da due tipologie di dispositivi, ossia i sensori che si occuperanno di rilevare dei cambiamenti nell’ambiente controllato, infine gli attuatori che nel nostri caso si riducono alle semplici sirene che lampeggiano ed emettono un suono d’allarme. Come anticipato, abbiamo in mente di usare dispositivi su rete Zigbee, si per la loro facilità nella configurazione, sia perché sono indipendenti dalla rete Wi-Fi. Partiamo subito elencandovi i sensori adoperati; avendo 3 finestre, 3 porte finestre ed una porta d’ingresso abbiamo adoperato dei semplici sensori binari Sonoff SNZB-04, facili da installare su quasi tutti i telai ed in grado di rilevare lo stato di apertura o chiusura di porte e finestre.

Abitando al primo piano, temendo di subire infrazioni dal lato del balcone che sporge sulla strada, abbiamo montato anche dei sensori di vibrazione Aqara DJT11LM sulle cancellate esterne, sebbene la loro configurazione sia alquanto ostica, sono settabili su diversi gradi di sensibilità (noi consigliamo di settarli sulla sensibilità media) e forniscono moltissime informazioni come angolazione, temperatura e durata batteria.

Per monitorare l’interno della casa ci siamo affidati ancora una volta ai device Sonoff, adoperando per quasi tutte le stanza i sensori PIR SNZB-03, anche questi sensori binari pensati per rilevare movimenti all’interno di ambienti. L’unica pecca riscontrata per questi dispositivi è l’assenza di un supporto regolabile da parte che venga fornito in dotazione, sebbene sia acquistabile separatamente oppure realizzabile con una stampante 3D. Solo in una stanza abbiamo adoperato un sensore di presenza, ovvero il Sonoff SNZB-06P, scelto sia per la funzionalità di router Zigbee che per possibilità di controllare anche la luminosità della stanza, visto che è stato installato nella cameretta dei bambini. I sensori fin ora elencati, ad eccezion fatta per il Sonoff SNZB-06P, sono tutti sensori a batteria, quindi end device, pertanto vi consiglio di adoperare nelle vicinanze dispositivi Zigbee che fungono da router, per rinforzare il segnale e permettere una buona comunicazione con il coordinatori. Ad esempio, noi abbiamo installato diverse prese smart Zigbee come le Sonoff S26R2.

Gli attuatori adoperati, come detto prima, sono tutte sirene. Abbiamo installato due tipologie di sirene Zigbee, una da 90db alimentabile sia da rete elettrica che a batteria, le altre due sono per esterno e sono alimentate a batterie e dotate di un pannello solare. La sirena Coolcam Tuya è di piccole dimensioni, dotata di ben 18 suoni diversi e 3 livelli di volume. Possiamo alimentarla con la propria porta USB type-C rendendolo un router Zigbee, oppure alimentarlo dalle batterie in dotazione facendolo diventare un end device. Sebbene sia solo di 90 db, quindi non produca un suono molto forte, è praticissima da adoperare e facilmente collocabile in ambiente chiuso.

Le altre due sirene sono sempre Zigbee Tuya e sono il modello TS0601, dotate di pannello solare per la ricarica della batteria da 3,7V di tipo 18650. Sono sirene particolarmente belle esteticamente e adatte all’ambiente esterno, essendo dotate di certificazione impermeabilità IPX5. Oltre alla scelta di 3 melodie, di 3 livelli di volume ed alla durata dell’allarme sonoro, hanno anche un sistema anti-rimozione, facendole suonare se un malintenzionato prova a rimuoverle dal loro supporto murale. Sono, altresì, dotate di un led lampeggiante blu, che possiamo abbinare o meno all’allarme sonoro. Abbiamo deciso di posizionarne una esternamente sul balcone ed una internamente, all’ingresso dell’abitazione.

Lista componenti su Amazon:

Lista componenti su Aliexpress:

Integrazione in Home Assistant

Tutti i dispositivi elencati lavorano su rete Zigbee e gestiti da Zigbee2MQTT, in quanto lo riteniamo più affidabile e compatibile di ZHA. Una volta che ogni dispositivo sarà integrato in Home Assistant, dobbiamo creare il pannello di gestione dell’allarme, per attivarlo e disattivarlo manualmente o automaticamente, creando persino della automazioni per l’attivazione e l’innesco dell’allarme in caso di rilevamento di uno dei sensori.

Apriamo con l’add-on File editor il file configuration.yaml e in fondo inseriamo quanto segue:

#Allarme
alarm_control_panel:
  - platform: manual
    name: Allarme Casa
    code: "xxxx"
    code_arm_required: false
    arming_time: 30
    delay_time: 1
    trigger_time: 180
    disarmed:
      trigger_time: 0
    armed_home:
      arming_time: 0
      delay_time: 0 

Una volta personalizzato, controlliamo da Strumenti per sviluppatori che non ci siano errori e riavviamo Home Assistant e vedremo apparire tre le entità il Pannello di controllo dell’allarme. Il codice che siamo usando ci permette di creare un pannello da inserire nella plancia per attivare e disattivare l’allarme. In code andiamo ad inserire il nostro pin, ossia il codice per attivare o disattivare l’allarme. In arming_time definiamo in secondi il tempo che il sistema attende per inserire l’allarme, in delay_time i secondi di attesa per l’innesco dell’allarme dal momento in cui un sensore effettua una rilevazione, in trigger_time la durata dell’innesco. Lo stato armed_home non lascerà il tempo di lasciare l’edificio o di disattivare l’allarme, mentre lo stato disarmed non fa mai scattare l’allarme.

Il Pannello così creato prende il nome di Allarme Casa e ci permette di gestire due modalità, una di Allarme in casa ( da impostare come un allarme perimetrale, che possiamo attivare se siamo in casa, come ad esempio la notte), un Allarme fuori casa (da utilizzare quando siamo lontani dall’abitazione) e l’area per inserire il codice di allarme. Oltre alle modalità Allarme in casa e Allarme fuori casa, sono disponibili altre modalità che però non vedremo in questa guida.



Passiamo alla creazione delle automazioni per gestire la modalità Allarme fuori casa, Allarme in casa e l’Innesco. Iniziamo da quest’ultimo, andando su Impostazioni -> Automazioni e scenari -> Crea automazione. In Quando cerchiamo selezioniamo Entità e Stato, cercando poi l’entità Allarme Casa e nella casella A selezioniamo Innesco. In questo modo stiamo dicendo che quando lo stato dell’allarme è su Innesco, l’automazione dovrà fare qualcosa e questo qualcosa è attivare le sirene.

Per attivarle in Allora aggiungiamo i dispositivi sirena e li impostiamo come attivi. Creiamo anche un sistema per notificarci sullo smartphone che l’allarme è scattato.

Il codice YAML deve essere simile a questo:

alias: Innesco
description: ""
trigger:
  - platform: state
    entity_id:
      - alarm_control_panel.allarme_casa
    to: triggered
condition: []
action:
  - service: notify.notify
    metadata: {}
    data:
      message: ALLARME CASA!
  - type: turn_on
    device_id: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
    entity_id: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
    domain: switch
  - type: turn_on
    device_id: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
    entity_id: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
    domain: switch
  - type: turn_on
    device_id: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
    entity_id: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
    domain: switch
mode: single

Passiamo ora alla modalità Allarme fuori casa. Creiamo una nuova automazione che chiameremo Allarme “fuori casa” e nella sezione Quando andiamo a selezionare uno per uno tutti i sensori PIR, Vibrazione e Rilevamento persone e impostiamoli come segue.

Ora dobbiamo porre una condizione senza la quale il rilevamento inneschi l’allarme e per farlo nella sezione Se controlliamo se l’entità Allarme Casa è impostato su Allarme fuori casa. Perciò, solo se l’allarme ha questa impostazione e un sensore rileva qualcosa, l’allarme verrà innescato.

Per innescare l’allarme, nella sezione Allora chiamiamo il servizio Pannello di controllo degli allarmi: Attivazione e come destinazione selezioniamo Allarme Casa, come disposto in figura. Per attivare l’allarme possiamo scegliere se inserire o meno il codice di allarme, per evitare attivazioni non volute.

Il codice YAML dovrebbe essere simile a questo:

alias: Allarme "fuori casa"
description: ""
trigger:
  - type: opened
    platform: device
    device_id: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
    entity_id: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
    domain: binary_sensor
  - type: opened
    platform: device
    device_id: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
    entity_id: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
    domain: binary_sensor
  - type: opened
    platform: device
    device_id: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
    entity_id: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
    domain: binary_sensor
  - type: opened
    platform: device
    device_id: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
    entity_id: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
    domain: binary_sensor
  - type: opened
    platform: device
    device_id: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
    entity_id: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
    domain: binary_sensor
  - type: opened
    platform: device
    device_id: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
    entity_id: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
    domain: binary_sensor
  - type: opened
    platform: device
    device_id: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
    entity_id: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
    domain: binary_sensor
  - type: motion
    platform: device
    device_id: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
    entity_id: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
    domain: binary_sensor
  - type: motion
    platform: device
    device_id: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
    entity_id: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
    domain: binary_sensor
  - type: motion
    platform: device
    device_id: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
    entity_id: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
    domain: binary_sensor
  - type: vibration
    platform: device
    device_id: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
    entity_id: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
    domain: binary_sensor
  - type: vibration
    platform: device
    device_id: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
    entity_id: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
    domain: binary_sensor
  - type: vibration
    platform: device
    device_id: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
    entity_id: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
    domain: binary_sensor
  - type: vibration
    platform: device
    device_id: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
    entity_id: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
    domain: binary_sensor
  - type: vibration
    platform: device
    device_id: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
    entity_id: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
    domain: binary_sensor
  - type: vibration
    platform: device
    device_id: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
    entity_id: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
    domain: binary_sensor
condition:
  - condition: state
    entity_id: alarm_control_panel.allarme_casa
    state: armed_away
action:
  - service: alarm_control_panel.alarm_trigger
    target:
      entity_id: alarm_control_panel.allarme_casa
    data: {}
mode: single



L’ultima automazione è quello dell’allarme in casa, che compileremo in maniera ridotta rispetto a quella fuori casa, visto che la realizzeremo come un perimetrico ed escluderemo i sensori di movimento interno all’abitazione. Come prima, nella sezione Quando inseriamo lo stato di rilevamento attivo dei soli sensori di porte/finestre e di vibrazione.

Come prima, nella sezione Se controlliamo se l’entità Allarme Casa è impostato su Allarme in casa, attivando l’allarme solo se un sensore di quelli scelti rileva qualcosa.

Infine, nella sezione Allora, esattamente come poco fa, chiamiamo il servizio Pannello di controllo degli allarmi: Attivazione e come destinazione selezioniamo Allarme Casa.



Come prima riportiamo il codice YAML di esempio:

alias: Allarme "In casa"
description: ""
trigger:
  - type: opened
    platform: device
    device_id: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
    entity_id: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
    domain: binary_sensor
  - type: opened
    platform: device
    device_id: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
    entity_id: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
    domain: binary_sensor
  - type: opened
    platform: device
    device_id: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
    entity_id: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
    domain: binary_sensor
  - type: opened
    platform: device
    device_id: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
    entity_id: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
    domain: binary_sensor
  - type: opened
    platform: device
    device_id: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
    entity_id: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
    domain: binary_sensor
  - type: opened
    platform: device
    device_id: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
    entity_id: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
    domain: binary_sensor
  - type: opened
    platform: device
    device_id: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
    entity_id: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
    domain: binary_sensor
  - type: vibration
    platform: device
    device_id: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
    entity_id: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
    domain: binary_sensor
  - type: vibration
    platform: device
    device_id: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
    entity_id: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
    domain: binary_sensor
  - type: vibration
    platform: device
    device_id: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
    entity_id: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
    domain: binary_sensor
  - type: vibration
    platform: device
    device_id: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
    entity_id: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
    domain: binary_sensor
  - type: vibration
    platform: device
    device_id: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
    entity_id: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
    domain: binary_sensor
  - type: vibration
    platform: device
    device_id: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
    entity_id: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
    domain: binary_sensor
condition:
  - condition: state
    entity_id: alarm_control_panel.allarme_casa
    state: armed_home
action:
  - service: alarm_control_panel.alarm_trigger
    target:
      entity_id: alarm_control_panel.allarme_casa
    data: {}
mode: single

L’ultimo atto della realizzazione del nostro allarme è stato realizzare due automazioni per attivare e disattivare l’Allarme in casa per le ore notturne, in modo che ci sia un allarme perimetrale che difenda gli abitanti dell’abitazione durante il sonno. Iniziamo dall’attivazione dell’allarme, di cui riportiamo il codice YAML che potete copia e incollare comodamente. Esso prevede che l’allarme si attivi a mezzanotte di ogni sera.

alias: Allarme Notturno Attivo
description: ""
trigger:
  - platform: time
    at: "00:00:00"
condition: []
action:
  - service: alarm_control_panel.alarm_arm_home
    target:
      entity_id: alarm_control_panel.allarme_casa
    data: {}
mode: single

Per la disattivazione, essa avviene automaticamente alle 6:30 del mattino. L’automazione richiede necessariamente l’inserimento del pin all’interno del codice YAML che riportiamo di seguito e sul quale dovete solo inserire il vostro codice di allarme.

alias: Allarme Notturno Disattivato
description: ""
trigger:
  - platform: time
    at: "06:30:00"
condition:
  - condition: state
    entity_id: alarm_control_panel.allarme_casa
    state: armed_home
action:
  - service: alarm_control_panel.alarm_disarm
    target:
      entity_id: alarm_control_panel.allarme_casa
    data:
      code: "xxxxxx"
mode: single