Raspberry Pi con Home Assistant per gestire Xiaomi Mi Smart Home

Raspberry Pi con Home Assistant per gestire Xiaomi Mi Smart Home

Xiaomi Mi Smart Home è una famiglia di prodotti realizzati per rendere più SMART la casa, purtroppo sono venduti solo in Cina, ma sono molto economici ecco perché si potrebbero prendere in considerazione e utilizzarli all’interno delle nostre abitazioni. Xiaomi Mi Smart Home Gateway 2 con i sensori di apertura chiusura porta, movimento e pulsante Smart switch si possono utilizzare con Raspberry Pi 3 e Home Assistant per la Casa Domotica.

Come configurare Xiaomi Mi Gateway 2 con Home Assistant e Raspberry Pi 3

A inizio 2016 ho acquistato Xiaomi Smart Home Kit con all’interno il Gateway (versione 1) un sensore di movimento, un sensore apertura/chiusa porta e un pulsante SMART configurabile, questi prodotti si possono utilizzare attraverso l’applicazione Xiaomi Mi Home.

Non sto a dilungarmi su come configurare Xiaomi Smart Home Kit sono cose che do per scontato, l’unica cosa importante da sapere è che l’utilizzo di questi sensori all’interno di Home Assistant è possibile solo con l’ultima versione del Mi Home Gateway, infatti per poter scrivere questo tutorial ho dovuto acquistare separatamente il nuovo Xiaomi Smart Home Gateway (DGNWG02LM), dato che la prima versione (DGNWG01LM) non è configurabile all’interno di Home Assistant.

Prerequisiti per usare Xiaomi Mi Smart Home all’interno di Home Assistant installato su Raspberry Pi 3

Per poter seguire questo tutorial devi aver acquistato Raspberry Pi 3 e seguito la procedura d’installazione di Home Assistant con Raspberry Pi All-In-One Installer, trovi tutto nell’articolo: Raspberry Pi 3 con Home Assistant per la Casa Domotica – Progetti Raspberry Pi.

In questo tutorial utilizzerò anche Putty e WinSCP, tutte cose che abbiamo già visto all’interno dell’articolo precedentemente menzionato.

Potrebbe interessarti anche l’articolo: Raspberry Pi 3 con Home Assistant: Broadlink RM Pro + Netatmo + Yeelight per la Casa Domotica.

Xiaomi Smart Home Kit con Home Assistant – Scaricare i file necessari

Xiaomi Mi Smart Home Kit non è tra i prodotti ufficialmente compatibili con Home Assistant e che trovi elencati nella pagina web Components, per fortuna però ci sono persone che hanno scritto il codice per poter utilizzare questi sensori con Home Assistant, quindi la prima cosa da fare è andare su github.com.

Una volta su github.com bisogna registrasi quindi quindi scaricare i file cliccando su “clone or download” e poi su Download Zip.

Ora bisogna scompattare il file .zip in una cartella del PC, quindi copiare il contenuto della cartella components in:
/srv/homeassistant/homeassistant_venv/lib/python3.4/site-packages/homeassistant/components

Questo è possibile farlo utilizzando WinSCP, se ricevete il messaggio “cartella binary_sensor già esistente sovrascrivere” cliccate su “Si a Tutti”.

Conclusa questa prima parte configuriamo Xiaomi Mi Smart Home Gateway.

Xiaomi Mi Smart Home Gateway come attivare le funzioni sviluppatore e local area network communication protocol

Aprire l’applicazione Mi Home sul proprio smartphone android, quindi tra l’elenco dei dispositivi selezionare il Mi Home Gateway di seconda generazione, nella schermata successiva fare tap sull’icona con tre puntini orizzontali in alto a destra dello schermo.

Xiaomi Mi Home versione Cinese schermata Smart Home Gateway

Fare tap su “about”, quindi attivare la modalità sviluppatore con tap ripetuti sulla scritta Version: 2.23 (la vostra versione potrebbe essere differente), a questo punto verranno visualizzate nuove voci, fare tap su “local area network communication protocol”.

Xiaomi Mi Home Gateway attivare funzioni sviluppatore

Attivare il pulsante “local area network communication protocol e memorizzare la password, tap su confirm, dovreste ricevere un messaggio con scritto “result ok”.

Xiaomi Mi Home Gateway local area network communication protocol

Sempre nella schermata about fare tap su “gateway information” e copiare il MAC ADDRESS (MAC: 28:xx:xx:yy:zz:x6) questo serve solo se avete intenzione di configurare più di uno Xiaomi Smart Home Gateway all’interno di Home Assistant

Ora passiamo alla configurazione su Home Assistant.

Configurare Home Assistant per accedere a Xiaomi Mi Smart Home Gateway e relativi sensore associati

Aprire il file configuration.yaml e inserire il codice:

# Xiaomi Mi Home Gateway
xiaomi:
 gateways:
   - sid:
     key: xxxxxxxxxxxxxxxx

Key è la password precedentemente salvata. Riavviare Home Assistant da Putty con il solito comando:

sudo systemctl restart home-assistant.service

Il riavvio sarà più lungo del solito perché verrà installato in automatico Pycrypto.

Se tutto è andato per il verso giusto raggiungendo la schermata principale di Home Assistant e cliccando in States sotto la scritta Developer Tools dovreste trovare dei valori tipo:

binary_sensor.door_window_sensor_158d0000efa0e2
binary_sensor.motion_sensor_158d0000ed3333
binary_sensor.switch_158d0000eff3fd

A questo punto i sensori apertura chiusura porta, sensore movimento e pulsante smart presenti nel Xiaomi Mi Smart Home Kit si possono utilizzare all’interno di Home Assistant per creare procedure automatizzate.

Come automatizzare la casa domotica con Xiaomi Mi Smart Home, Home Assistant e Raspberry Pi 3

Dopo la prima fase di configurazione vediamo come sfruttare i componenti del Xiaomi Home Kit, Wireless Switch, Occupancy Sensor e Door and Windows Sensor, per creare procedure automatizzate.

Come rendere più user friendly la visualizzazione dello stato dei sensori all’interno di Home Assistant

Iniziamo con il dare dei nomi un po’ più “user friendly” a questi sensori, per fare questo è necessario aprire il file configuration.yaml oppure il file customize.yaml, se avete creato un file a parte per la personalizzazione dei sensori in Home Assistant, e inserire il seguente codice:

#############XIAOMI Mi GATEWAY####
    binary_sensor.door_window_sensor_158d0000efa0e2:
       friendly_name: "Sensore Porta"
    binary_sensor.motion_sensor_158d0000ed3333:
       friendly_name: "Sensore Movimento"
    binary_sensor.switch_158d0000eff3fd:
       friendly_name: "Campanello"
    camera.xiaomi_camera:
       friendly_name: "Telecamera"

Io ho inserito il codice nel file customize.yaml, dove inserisco tutte le personalizzazioni dei vari sensori, questo file dev’essere incluso nel file configuration.yaml, per fare questo è sufficiente inserire il codice customize: !include customize.yaml nel file configuration.yaml, esempio:

homeassistant:
  name: Enore Home
  latitude: xx.xxxxx
  longitude: xx.xxxxx
  elevation: 20
  unit_system: metric
  time_zone: Europe/Rome
  customize: !include customize.yaml

Per visualizzare lo stato dei sensori Xiaomi creiamo un nuovo gruppo “Mi Home” all’interno del file groups.yaml, si può creare anche all’interno dei file configuration.yaml ma consiglio di creare un file groups.yaml dove inserire tutti i vostri gruppi e di includerlo nel file configuration.yaml con il codice group: !include groups.yaml

  ##Xiaomi##
  Mi Home:
   - binary_sensor.door_window_sensor_158d0000efa0e2
   - binary_sensor.motion_sensor_158d0000ed3333
   - binary_sensor.switch_158d0000eff3fd

Quindi inserire il gruppo “Mi Home” all’interno di uno dei gruppi principali, nel mio caso uso Xiaomi Mi Smart Home in ufficio quindi lo inserirò all’interno del gruppo “Ufficio”, per includerlo è sufficiente aggiungere alla lista (entities) il valore: – group.mi_home (il nome del gruppo in minuscolo con _ al posto dello spazio).

  ufficio:
    name: Ufficio
    view: yes
    entities:
      - group.mi_home
      - group.aeotec_multiSensor_6
      - group.broadlink
      - light.ufficio
      - light.lampada_ufficio
      - switch.broadlink_switch

Riavviare Home Assistant, ora se raggiungo la pagina principale di Home Assistant e vado in Ufficio vedo il gruppo Mi Home con indicato lo stato dei sensori, ovviamente la semplice visualizzazione dello stato dei sensori non ha molta utilità.

Il passo successivo potrebbe essere quello di rinominare l’output del sensore, per esempio per il sensore porta sarebbe meglio avere un valore tipo “aperta” invece di “on” e “chiusa invece” di “off”.

Xiaomi Mi Smart Home Kit con Raspberry Pi e Home Assistan installare aggiunto gruppo Mi Home in Ufficio user friendly
Home Assistant Schermata Uffcio con i sensori Xiaomi Smart Home

Home Assistant, Raspberry Pi 3, Xiaomi Mi Smart Home Kit: esempio di automazione

A questo punto si potrebbe creare una automazione, così possiamo parlare di Casa Domotica in modo appropriato.

Alcune volte mi capita di uscire dalla stanza del mio ufficio lasciando la porta aperta ed il condizionatore acceso, questo mi capita sia d’inverno che d’estate, capirete che se mi assento per 5 minuti non succede nulla, ma se mi assento per diverso tempo il condizionatore consumerà energia per niente, inoltre con la porta aperta i consumi saranno ancora maggiori.

Per questo motivo ho creato un automatismo grazie al quale il condizionatore si spegne se la porta del mio ufficio rimane aperta per più di 30 minuti, vediamo l’esempio.

Per spegnere e accendere il condizionatore dell’ufficio utilizzo il Broadlink RM Pro, già configurato con Home Assistant e Raspberry Pi, l’integrazione della piattaforma Broadlink all’interno dei Home Assistant l’ho trattata nell’articolo: Raspberry Pi 3 con Home Assistant: Broadlink RM Pro + Netatmo + Yeelight per la Casa Domotica.

È necessario creare un file chiamato automation.yaml in questo file inseriremo tutti gli automatismi che vogliamo avere nella nostra casa domotica, in questo caso il codice da inserire nel file automation.yaml è il seguente:

  - alias: 'Spegni Condizionatore'
    trigger:
      platform: state
      entity_id: binary_sensor.door_window_sensor_158d0000efa0e2
      state: 'on'
      for: 
       hours: 00
       minutes: 30
       seconds: 00
    condition:
      condition: state
      entity_id: switch.broadlink_switch
      state: 'on'
    action:
      - delay: 00:00:10
      - service: switch.turn_off
        entity_id: switch.broadlink_switch
      - service: notify.telegram
        data:
          message: 'Hai dimenticato il condizionatore acceso!'

Esaminiamo brevemente il codice, trigger da inizio alla regola d’automazione, in questo caso il sensore porta di Xiaomi Mi Smart Home (entity_id: binary_sensor.door_window_sensor_158d0000efa0e2 il tuo avrà un entity_id differente) se è nello stato (platform: state) di “on” da almeno 30 minuti (for: minutes:30) e se è verificata la condizione (condition) che lo switch Condizionatore Ufficio (entity_id: switch.broadlink_switch) è su ON (state: ‘on’) verrà eseguita l’azione (action🙂 di spegnere il condizionatore (service: switch.turn_off) dell’ufficio (entity_id: switch.broadlink_switch), questo dopo 10 secondi (delay: 00:00:10), inoltre mi arriverà un messaggio su Telegram (service: notify.telegram) che mi avvisa di aver lascito il condizionatore acceso (message: ‘Hai dimenticato il condizionatore acceso!’).

Come abbiamo visto in questi automatismi è possibile inserire delle condizioni (conditions), per esempio è possibile fare in modo che un automatismo venga eseguito solo a determinati orari del giorno, solo se una persona è in casa ecc. Per maggiori informazioni puoi raggiungere la pagina Automating Home Assistant.

Creato il file automation.yaml con all’interno i nostri automatismi dovremo includerlo del file configuration.yaml inserendo questo codice:

automation: !include automation.yaml

Questi sono solo semplici esempi che però mostrano come, grazie a Raspberry Pi 3 e Home Assistant, sia possibile far dialogare tra loro prodotti per la Casa Domotica che difficilmente riuscirebbero a “comunicare” tra di loro, in questo esempio Xiaomi Mi Smart Home è stato utilizzato insieme al Broadlink RM Pro.

Potrebbe interessarti anche l’articolo: Configurare Aeotech MultiSensor 6 con Home Assistant e Raspberry Pi 3 – Open Z-Wave.

  • Daniele Orrico

    Ciao, grazie ai tuoi articoli sono riuscito ad installare HA su Raspberry Pi Zer W in modo semplice e pratico!
    Ho attivato le notifiche tramite Telegram e creato un’automazione di prova ma non funziona, mi dai una mano a capire dove sbaglio? Ti allego il codice di esempio

    telegram_bot:

    platform: polling
    Api_key: AAAAAAAA: XXXXXXXXXXXXXXXXXXXXX
    allowed_chat_ids:
    NNNNNNNN
    notify:

    platform: telegram
    Chat_id: NNNNNNNN

    automation.yalm file so:

    alias: prova
    trigger:
    entity_id: device_tracker.Daniele
    event: enter
    platform: zone
    zone: zone.home
    action:
    service: notify.xxxxxxx
    data:
    message: ‘ciao’

    (il bot l’ho testato tramite la stringa https://api.telegram . org/bot/sendMessage?chat_id=xxxx&text=123 e funziona)

    Grazie!!! 🙂