Xiaomi Alarm su Home Assistant

HassioHelp

Xiaomi Alarm su Home Assistant

In questo articolo vedremo come implementare un sistema di allarme personalizzabile con HomeAssitant basato sui Gateway Xiaomi, Sensori Porta/Finestra Xiaomi, Body Sensor Xiaomi, Device Tracker vari e Smart Speacker Google o Amazon.

L’allarme è stato realizzato nel formato package quindi, se non avete ancora configurato i package all’interno della Vostra installazione di Home-Assistant, date uno sguardo all’articolo Package Configurazione.

Ho reso disponibile il tutto su GitHub ed è un sistema molto stabile ormai anche se sono possibili ulteriori aggiornamenti per implementare nuove funzionalità o per correggere eventuali malfunzionamenti riscontrati.

Il package dell’allarme, alcuni esempi di suonerie MP3 da caricare sul Gateway Xiaomi Mijia ed alcuni packages di utilità sono scaricabile dal repository https://github.com/sdesalve/dss_xiaomi_alarm.

Per ulteriori informazioni dettagliate sul funzionamento di base dell’allarme manuale di Home-Assistant, Vi consiglio di leggere la documentazione ufficiale all’URL https://www.home-assistant.io/components/manual/

 

REQUISITI:

Attenzione, questi sono i requisiti per utilizzare il package dell’allarme cosi com’è, senza nessuna modifica. Nulla vieta la possibilità di modificare il codice per renderlo utilizzabile anche con altre configurazioni.

  • Gateway Zigbee Xiaomi Mijia (almeno 1);
  • Sensori porte/finestre Xiaomi,
  • Sensori movimento Xiaomi, o qualunque altro dispositivo che abbia come stato ON ed OFF e che sia già correttamente configurato all’interno di HA;
  • Pulsanti tondi Xiaomi (minimo 1 per l’attivazione in modalità Home e/o minimo 1 per l’attivazione in modalità Away);
  • Device Tracker già configurato, tipo i tracker Nut Mini tracciati con ESP32 , un mio progetto che trovate sempre su GitHub (l’allarme è già predisposto per 2 gruppi di dispositivi di altrettanti utenti da tracciare) o NMap;
  • Google Home o (Alexa NEROGRIGIO CHIARO , GRIGIO SCURO) o qualunque altro sistema per riprodurre testo tramite TTS.

Tramite il Gateway Zigbee Xiaomi Mijia sarà possibile riprodurre diverse suonerie (da caricare mediante l’applicazione MiHome), accendere il led per dare un feedback visivo dello stato corrente dell’allarme ed, ovviamente, permettere il collegamento dei sensori/pulsanti che comporranno il Vostro nuovo allarme. Sarà possibile aggiungere facilmente diversi Gateway che lavoreranno in sincronia.

 

FUNZIONALITÀ:

L’allarme, come detto, richiede un Gateway Zigbee Xiaomi Mijia, alcuni sensori porta/finestra ed alcuni pulsanti ZigBee. Sarà possibile ricevere le notifiche sullo stato e sugli eventi attraverso qualunque sistema di notifica, ad esempio tramite Telegram e/o Push HTML5.
C’è la possibilità di differenziare tutte le suonerie ed i relativi volumi in base a due fasce orarie: giorno (es. dalle 7:00 alle 21:00) e notte (nelle restanti ore).
Sarà possibile personalizzare numerosi aspetti del funzionamento dell’allarme ed il suo comportamento in base ai diversi eventi direttamente dall’interfaccia grafica di Home-Assistant. Ad esempio potrete attivare disattivare le seguenti opzioni:

  • Continuare a far lampeggiare il gateway ad attivazione avvenuta o meno (Accendi lampeggiante ad attivazione AWAY avvenuta)
  • Far lampeggiare l’allarme in caso di innesco in modalità AWAY (Lampeggia ROSSO quando Allarme in modalità AWAY)
  • Accensione Led Verde del Gateway alla disattivazione (Lampeggia VERDE quando Allarme DISATTIVATO)
  • Attivazione automatica all’uscita di tutti i dispositivi tracciati (Attivazione automatica se Dispositivi non in Casa)
  • Disattivazione automatica al rientro di uno dei dispositivi tracciati (Disattivazione automatica se rientra Dispositivo)

Sarà possibile scegliere le notifiche da ricevere tramite i vostri servizi di notifica (link) un messaggio al verificarsi dei seguenti eventi:

  • Inserimento in modalità AWAY con indicazione degli infissi rimasti aperti (NOTIFICA Allarme armato in modalità AWAY)
  • Inserimento in modalità HOME con indicazione degli infissi rimasti aperti (NOTIFICA Allarme armato in modalità HOME)
  • Disattivazione dell’Allarme (NOTIFICA Allarme disarmato)
  • Rientro di uno dei dispositivi tracciati (NOTIFICA che qualcuno è rientrato)
  • Uscita di tutti i dispositivi tracciati (NOTIFICA che gli utenti sono usciti)

I sensori da non includere nel controllo dello stato degli infissi in fase di attivazione possono essere inseriti, come entity_id o come gruppo di entity_id, nelle secrets dss_binary_sensor_secrets_ignora_controllo_infissi_chiusi_home e dss_binary_sensor_secrets_ignora_controllo_infissi_chiusi_away.
Tutti i sensori non inclusi negli elenchi precedenti, se nello stato ON, faranno accendere il LED del Gateway Xiaomi di arancione e verrà riprodotto un messaggio vocale tramite il sistema TTS di avvertimento che l’attivazione, se effettuata facendo doppio click su uno dei pulsanti definiti nelle secrets entity_pulsante_attiva_allarme_home e entity_pulsante_attiva_allarme_away, sta avvenendo con alcuni infissi aperti. In questa fase è possibile anche conoscere gli infissi che risultano aperti semplicemente facendo click sempre su uno dei pulsanti di inserimento dell’allarme.
Se non viene annullato l’inserimento dell’allarme (disinserendolo) per chiudere gli infissi o se l’attivazione avviene in altri modi, si riceverà comunque una notifica con l’elenco degli infissi lasciati aperti.

Sono previsti dei sensori che non fanno direttamente innescare l’allarme se attivo, ma che riproducono solo un avvertimento sullo stato dell’allarme stesso. Sarà possibile impostare una suoneria, il volume, il ritardo dell’esecuzione e la fascia oraria in cui eseguire il promemoria al cambio di stato dei sensori elencati nelle secrets entity_sensore_promemoria_allarme_attivato_away e entity_sensore_promemoria_allarme_attivato_home.

Sarà possibile definire dei sensori che prevedono un innesco ritardato dell’allarme: basterà inserirne l’entity_id o il gruppo di entity_id nelle secrets entity_sensore_innesco_ritardato_allarme_away o entity_sensore_innesco_ritardato_allarme_home. Potrai scegliere il tempo da attendere prima di innescare l’allarme, i volumi e le suonerie divise per fascia oraria da riprodurre se l’allarme è attivo ed uno di questi sensori cambia stato passando ad ON. Dopo il tempo prescelto verrà innescato l’allarme.

Come detto l’allarme verrà innescato dal cambio di stato di uno dei sensori monitorati e che dovranno essere inseriti nei gruppi di entity delle secrets sensori_che_fanno_scattare_allarme_home_mode sensori_che_fanno_scattare_allarme_home_away.Potrete aggiungere diversi sensori porta finestra (link) per controllare i Vostri infissi; diversi Sensori Body Sensor (link) per rilevare i movimenti delle persone all’interno della vostra abitazione; sensori vibrazione Xiaomi (link) per rilevare ad esempio il sollevamento di una tapparella o qualunque altra entity di Home Assistant che preveda un passaggio dallo stato OFF a quello ON.

L’allarme può essere inserito, oltre che manualmente con la pressione di alcuni tasti e dall’interfaccia di Home-Assistant, anche automaticamente tramite alcuni device_tracker, cioè tramite il controllo della presenza o meno di una persona (tramite i suoi dispositivi personali) all’interno della casa. Per informazioni su come impostare i device_tracker e tracciare le presenze potete leggere questa guida (LINK).

Al momento sono tracciati due utenti, o meglio due gruppi di dispositivi riconducibili quindi a due persone diverse. I nomi dei gruppi di dispositivi da tracciare vanno inseriti nelle secrets nome_gruppo_dispositivi_utente1 e nome_gruppo_dispositivi_utente2. Dovranno necessariamente iniziare con un testo predefinito, es: “Dispositivi TUO_NOME”.
I gruppi di device_tracker (e che quindi prevedano come stato home ed away) dovranno essere inclusi nelle secrets elenco_dispositivi_tracciati_user1 e elenco_dispositivi_tracciati_user2.

Per ogni Gateway Xiaomi Mijia sarà necessario definire tre secrets: xiaomi_gatewayX_mac, entity_light_gatewayX e dss_options_elenco_suonerie_gatewayX.
Se avete due Gateway, l’allarme è già pronto. Altrimenti Vi sarà sufficiente rimuovere il file dss_xiaomi_alarm_gateway2.yaml e commentare nel file dss_xiaomi_alarm_gateway_service.yaml le righe che si riferiscono al gateway2. Di conseguenza se avete più di 2 gateway, Vi basterà duplicare il file dss_xiaomi_alarm_gateway2.yaml, sostituire il testo “gateway2” con “gateway3” ed aggiungere al file dss_xiaomi_alarm_gateway_service.yaml i richiami ai nuovi service appena creati.

 

INSTALLAZIONE:

Scarichiamo il file zip dal repository GitHub, scompattiamolo e copiamo la cartella sdesalve_alarm nella cartella packages.

Alla fine della procedura dovreste avere i 8 file seguenti nella cartella /config/packages/sdesalve_alarm della vostra installazione di HA.

Alcuni tra questi dovranno essere personalizzati in base alla vostre esigenze. Vediamo ora come:

1 – dss_xiaomi_alarm_gateway1.yaml
Script ed entities (Input_select e Input_number) necessari per far funzionare il primo Gateway Xiaomi Mijia.

2 – dss_xiaomi_alarm_gateway2.yaml
Script ed entities (Input_select e Input_number) necessari per far funzionare il secondo Gateway Xiaomi Mijia
Nel caso abbiate più di due Gateway, sarà sufficiente duplicare questo file e sostituire all’interno del file duplicato la stringa “gateway2” con, ad esempio “gateway3“. Se ne avete solo uno, potete cancellare questo file e come detto commentare i riferimenti al “gateway2” nel file “dss_xiaomi_alarm_gateway_service.yaml”

3 – dss_xiaomi_alarm_gateway_service.yaml
Script che si occupano di gestire i suoni e le luci emesse dal Gateway Xiaomi.
Nel caso aveste solo un Gateway, Vi sarà sufficiente commentare i service commentati negli script.
Ad esempio alla riga 42:

basterà aggiungere il simbolo # ed uno spazio per farla diventare:

Se avete ulteriori Gateway ed avete provveduto a creare altri duplicati del file dss_xiaomi_alarm_gateway1.yaml, basterà aggiungere altri richiami agli script corretti aggiungendo le righe dei service richiamati.

4 – dss_xiaomi_alarm_light_service.yaml
Script necessari per la gestione della luce di segnalazione dell’allarme; viene usato il led del Gateway Xiaomi per dare un feedback luminoso sullo stato dell’allarme

5 – dss_xiaomi_alarm_notify_service.yaml
Script per la gestione delle notifiche. Sono presenti sia le notifiche HTML5 (il nome del service è notifiche_html5 e nel caso va aggiornato con il vostro), che quelle Telegram (il nome del service di default è notifiche_telegram e deve essere aggiornato in base alla vostra configurazione)

6 – dss_xiaomi_alarm_switch_google.yaml (opzionale)
Switch necessari per il controllo vocale dell’allarme. Saranno esposti due switch a Google Assistant che permetteranno di Attivare l’allarme in modalità Home o che permetteranno di sospendere l’attivazione automatica in caso tutti i dispositivi tracciati dovessero abbandonare la casa.

7 – dss_xiaomi_alarm_tts_service (opzionale)
Script ed Automazioni necessarie per aggiungere supporto alla sintetizzazione dei messaggi sullo stato dell’allarme sul media_player che si utilizza.

8 – dss_xiaomi_alarm_users.yaml
Gruppo con i dispositivi tracciati. Passaggio di tutti i device_tracker da Home ad Away (uscita dalla casa), se attivata l’automazione corrispondente, farà inserire l’allarme automaticamente.
Il passaggio dallo stato da Away ad Home di uno dei device_tracker, se attivata l’automazione corrispondente, farà disattivare automaticamente l’allarme se inserito in modalità away.

Il file è predisposto per tracciare 2 utenti. Eventuali utenti aggiuntivi andranno aggiunti decommentando le righe di definizione dei gruppi aggiuntivi.

9 – dss_xiaomi_alarm_vXX_XX.yaml
Questo e il file vero e proprio dell’allarme, qui troviamo dentro tutti i script e le automazioni necessarie per il triggeramento dell’allarme. Teoricamente qui non c’e’ da toccare nulla.

Ora andiamo a modificare il  file secrets.yaml del nostro hassio e inseriamo i dati necessari:

ATTENZIONE: Vi consiglio di prendere il contenuto del file secrets.yaml dal file dss_xiaomi_alarm_vXX_XX.yaml. Eventuali modifiche ai nomi delle secrets potrebbero non essere presenti in questo articolo.

Come vedrete, sarà possibile personalizzare il funzionamento dell’allarme semplicemente completando il fil secrets.yaml con le entity_id dei propri dispositivi. Troverete nel menu laterale, su DEV seconda icona in basso <> tutte le entity_id configurate nella vostra installazione.

 

PACKAGES DI UTILITÀ:

All’interno del file zip scaricato dal repository sono presenti ulteriori packages non essenziali al funzionamento dell’allarme ma che saranno utili alla buona configurazione dello stesso.

1 -dss_google_voice_v1_5.yaml
Package audio di esempio. Sono presenti diversi Switch attivabili tramite Google Assistant che danno feedback sullo stato degli infissi, delle luci smart e permettono di controllare gli IR Blaster Broadlink. Vengono utilizzati anche i gruppi definiti nell’allarme per riprodurre un saluto personalizzato al cambio di stato di un sensore.

Dovrà essere definita anche la seguente secret nel file secrets.yaml:

2 – dss_broadlink_v2_1.yaml
Esempio di utilizzo di un IR Blaster Broadlink RM Mini 3.
Controllo di un TV con sensore sullo stato di accensione mediante PING verso un Chromecast e controllo di un Climatizzatore con sensore dello stato di accensione

3 – dss_dahua_cam.yaml
Esempio di integrazione di CAM IP mediante protocollo RTSP. Utilizzo di “generic” Platform e “ffmpeg” Platform

4 – dss_xiaomi_gateway1_audio_v3.yaml
Package che permette di riprodurre i suoni disponibili sul primo Gateway Xiaomi Mijia dichiarato e permetterà di trovare l’ID delle suonerie caricate.

5 – dss_xiaomi_gateway2_audio_v3.yaml
Package che permette di riprodurre i suoni disponibili sul secondo Gateway Xiaomi Mijia dichiarato e permetterà di trovare l’ID delle suonerie caricate.

Esempio Contenuto Editor Grezzo LOVELACE

Ricordiamo che sul nostro FORUM forum.hassiohelp.eu c’è la sezione dedicata a questo articolo dove possiamo discuterne per qualsiasi dubbio, domanda, informazione nel merito specifico di questo articolo.

 

11 risposte

  1. Avatar ANTONIO ha detto:

    Fantastico! grazie

  2. Avatar Jokerigno ha detto:

    Ciao,

    ti scrivo qui perchè nonostante l’annuncio manca ancora un topic nel forum.

    Innanzitutto grazie per il grandissimo lavoro!

    L’ho appena attivato e lo testerò prima delle vacanze estive.

    Alcune note sparse.

    Dss google voice
    google_say non funzia. L’ho sostituito con google_translate_say
    importando il file non funziona perchè non sono dichiarate alcuni secrets (ss_binary_sensor_secrets_ignora_controllo_luci_accese_home ecc).

    • SDeSalve SDeSalve ha detto:

      Ciao, in effetti ho dichiarato il servizio TTS Google con la key (OPZIONALE) service_name: google_say come da documentazione di Hassio e ciò crea qualche difficoltà a chi non l’ha usata.

      Nella prossima versione sistemerò, grazie.

      Per le secrets, ho già sistemato ed aggiornato l’articolo. Le ho aggiunte nell’ultima versione ed avevo aggiornato solo le secrets di esempio che trovi alla fine del file dss_xiaomi_alarm_v11_5.yaml.

  3. Avatar Sergio ha detto:

    splendido progetto e splendida guida. complimenti!
    sto ancora limando la configurazione per farla coincidere con le mie necessità ma una cosa te la vorrei chiedere subito: la modalità giorno e notte non sembra funzionare nel senso che parte sempre la modalità notte. Qualche idea?

    • SDeSalve SDeSalve ha detto:

      Grazie mille Sergio.

      Prova a guardare (da /dev-states del tuo HA) dalle 7:00 alle 21:00 il valore del binary_sensor.dss_mode_giorno. Deve essere ON durante il giorno.

      Trovi la definizione nel file dss_xiaomi_alarm_vXX_X.yaml verso la riga # 392.

  4. Avatar Sergio ha detto:

    Ciao ho risolto: semplicemente non avevo configurato il sensore “time” nella mia installazione.. ora è tutto ok e funziona alla grande: oltre i sensori Xiaomi sto monitorando dei sensori filari con un modulo nodemcu con firmware Konnected. molto interessante. Grazie

  5. Avatar Marco ha detto:

    Ciao,

    torno a stressarti qui per un aiuto e un suggerimento:

    Premessa: uso il tuo allarme con sensori di movimento anzichè sensori finestre.
    Problema: ho impostato 2 sensori in corridoio SOLO nella sezione “entity_sensore_innesco_ritardato_allarme_away:” ma in caso di allarme_home ricevo comunque il messaggio “sta per scattare l’allarme”. Dove sbaglio?

    Suggerimento:

    Al momento lo switch per le notifiche tts è unico. Sarebbe comodo secondo me che SOLO in caso di allarme notturno non ci fosse nessuna notifica tts, solo telegram.

    Che ne pensi?

Lascia un commento

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