Xiaomi Alarm su Home Assistant

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.

 

Sostienici, dona un caffè al nostro sito

 

 

18 risposte

  1. ANTONIO ha detto:

    Fantastico! grazie

  2. 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 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. 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 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. 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. 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?

  6. Luciano ha detto:

    Ciao e complimenti.

    Una info, i sensori di movimento Xiaomi usati hanno un tempo tecnico prima che tornino OFF dopo aver captato una presenza.

    E’ possibile cambiare questo tempo ?

    Grazie in anticipo

    • SDeSalve ha detto:

      Ciao, se usi la chiavetta ZigBee e non il Gateway Xiaomi puoi fare la modifica ai sensori movimento Aqara.
      Cerca “Making Xiaomi Motion Sensor a Super Motion Sensor”

      saluti

      • luciano ha detto:

        Ciao, si uso il binomio Deconz / Conbee II.
        Grazie per la risposta super fast, mi metto subito alla ricerca.

        Solo per info , lo chiedevo perche’ al sensore ho gia’ dato la funzione di inviare un immagine via Telegram ( ovviamente tramite ipcam ) ed accendere una luce, ma se aggiungo una funzione al cambiamento di lux, questa variazione il sensore la percepisce solo in caso di presenza ( leggendo adesso quello che sto scrivendo non so se sia proprio cosi ) . Comunque verifichero’.

        Ancora grazie
        p.s.: IPcam lowcost che sicuramente vengono in integrate in Hassio ?

  7. maxxxy ha detto:

    ciao.
    intanto grazie
    avrei mille domande perchè sono super acerbo.. cerco di chiarirmi un po le idee con qualche domandina iniziale e scusate se chiedo cose assurde

    1) intanto non trovo il post nel forum dove discuterne

    2) io ho sia la penna usb che il gateway che il google home quello “grosso”..userei la penna per gestire tutte le entity zigbee ma il gateway lo userei comunque come luce e come sirena

    3) ho scaricato il file da github ho copiato la cartella in packages….ho inserito la riga in configuration.yaml e poi ho copiato interamente il testo del file dss_xiaomi_alarm_v13_2_0.yaml dentro al mio file secret.yaml…
    … ho provato a editare il file secrey.yaml ma non so da dove cominciare…ci sono mille righe…

    4) tra le entity del mio hassio non trovo gli accessori di xiaomi tipo il sensore di movimento e nemmeno il gateway…. l’unica cosa che ho trovato e sono riuscito a gestire è lo switch con il qualce accendo e spengo luci o varie funzioni…

    5) non esiste un videotutorial????

    per adesso mi fermo qui e credo di aver gia fatto abbastanza casino 🙂 🙂

    • SDeSalve ha detto:

      1) In effetti non dovrebbe esserci… Abbiamo sempre fornito assistenza sul gruppo telegram. Sistemerò l’articolo.
      2) Puoi usare qualunque entity_id nei secret per triggerare l’allarme. Il google home (o qualunque altro smart speaker) lo puoi utilizzare (avendolo già correttamente configurato) per riprodurre i messaggi TTS dell’allarme. Ed il Gateway Xiaomi (ovviamente già configurato in HomeAssistant) lo utilizzerai per le suonerie e la luce di stato.
      3) non devi “copiato interamente il testo del file dss_xiaomi_alarm_v13_2_0.yaml dentro al mio file secret.yaml”. Devi copiare le secret contenute in quel file nel tuo secret.yaml e personalizzarle.
      4) prima di cimentarti con l’allarme credo tu debba configurare il tuo Gateway Xiaomi
      5) No, esiste questo articolo che dovrebbe essere più semplice da seguire passo passo.

  8. fredmassa ha detto:

    ciao SDeSalve,
    innanzitutto complimenti!!! Super guida e ottimo scritp.
    Ti scrivo perchè ho un problema. Finito di configurare il tutto, se verifico la configurazione da “impostazioni > controlli del server > verifica configurazione” mi ritorna il seguente errore: Configurazione non valida
    Component error: packages – Integration ‘packages’ not found.

    Da cosa può dipendere?
    grazie mille

    • SDeSalve ha detto:

      dalla sintassi errata nel tuo configuration.yaml con cui hai dichiarato i package


      homeassistant:
      packages: !include_dir_named packages

Lascia un commento

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

Advertisment ad adsense adlogger