ConBee: il gateway unico per i dispositivi ZigBee su Home Assistant

Leggi questo articolo grazie alle donazioni di Antonio Chiumiento, Matteo Nascimben, Alessandro Gambogi, Luigi Polloniato, Donatello Mancuso, Roberto Barison, Lorenzo Rossini, Alessandro Rodolico, Maurizio Bigalli, Luca Rosano, Ugo Romanelli.
♥ Partecipa anche tu alle donazioni: sostieni SaggiaMente, sostieni le tue passioni!

Il panorama dei dispositivi ZigBee e della domotica commerciale “a basso costo”, gode in questi ultimi tempi di una rinnovata fama, con una diffusione sempre in aumento nelle case degli appassionati (e non solo). Come abbiamo spiegato nell’articolo dedicato al prontuario sulla domotica, ZigBee è un protocollo di comunicazione wireless operante sulla stessa banda del Wi-Fi ma con caratteristiche differenti: rete di tipo mesh, dispositivi a basso consumo, necessità di un Gateway.

Per quanto riguarda i produttori, abbiamo da una parte Philips – con la sua storica serie di illuminazione Hue, in lenta ma costante espansione – e dall’altro alcuni player che cercano di farsi spazio nella sensoristica, come ad esempio Xiaomi-Aqara ed Ikea. Attualmente l’offerta è ben diversificata per fascia di prezzo, ma per le caratteristiche di questo protocollo avremo sempre necessità di uno hub che si occupi di comunicare con i dispositivi ZigBee, strumento che viene comunemente chiamato Gateway.

I singoli produttori hanno scelto praticamente sempre di non rendere standard il funzionamento di questi dispositivi: sia appoggiandosi alternativamete ai protocolli ZLL (Zigbee Light Link) o ZHA (Zigbee Home Automation), sia impedendo di abbinare lampadine o sensori di marche differenti. Il risultato è che, a parte casi fortunati e dalla sostenibilità nel tempo non garantita, dovremo possedere un hub Philips per poter utilizzare le Hue, un hub Xiaomi-Aqara per poter utilizzare sensori Xiaomi-Aqara e analogamente anche con Ikea, Osram, ecc..

Oggi c’è un’altra possibilità: il Gateway di Dresden Elektronik

Si tratta di una piccola azienda che si vanta di offrire prodotti e servizi “100% Made in Germany”, fondata nel 1990 e conosciuta nel mercato già da qualche anno. I prodotti che interessano questa recensione sono i loro Gateways, e in particolare il RaspBee, il Phoscon Gateway e il ConBee. All’interno del nostro canale Slack riservato ai saggidonatori Claudio Bartoli (@claud) è stato il primo ad utilizzare una soluzione di questo tipo. Con il progressivo aumento di diffusione dei dispositivi ZigBee connessi alla nostra rete, l’appeal del prodotto è aumentato, fino a quando altri di noi hanno deciso di provarlo.

Il RaspBee ed il ConBee presentano caratteristiche analoghe: il primo è in un formato adatto ad essere montato sulle GPIO di un Raspberry – ma è ormai fuori produzione – mentre il secondo ha un più pratico connettore USB. Il Phoscon Gateway, invece, non è altro che un Raspberry con il RaspBee montato ed un case personalizzato.

Ecco i principali aspetti interessanti di questa soluzione:

  • possibilità di controllare dispositivi ZigBee di molti produttori diversi (fino a 200 nodi ZigBee) mediante un’interfaccia di gestione deCONZ-PhosconApp disponibile per i maggiori sistemi operativi;
  • possibilità di controllo e programmazione diretta attraverso il software PhosconApp appena citato: per avere un’idea delle potenzialità del software basta scorrerne le funzionalità sulla documentazione, o buttare un occhio alla presentazione ufficiale;
  • semplice integrazione all’interno di software di gestione di eventi o automazioni, come Home Assistant o simili, attraverso addon (HA) o un ricco set di REST API;
  • espandibilità ed aggiornabilità futura garantita dall’architettura sostanzialmente open del sistema, e dalla possibilità di integrare nuovi dispositivi rapidamente;
  • community di appassionati direttamente in contatto con l’azienda, che è quindi attenta alle loro necessità e tende ad implementare le soluzioni tecniche suggerite.

Di fatto con questi prodotti è possibile utilizzare le periferiche ZigBee che più ci interessano per caratteristiche tecniche, costo e dimensione, senza doverci preoccupare di acquistare a parte hub o interfacce di collegamento apposite.

Lo schema superiore illustra il funzionamento di questa soluzione.

Ora vediamo quali saranno i passaggi operativi per implementare una soluzione come questa.
Nel mio caso ho acquistato una chiavetta ConBee per utilizzarla principalmente su Home Assistant, quindi farò riferimento alla sua installazione da qui in avanti. Ad ogni modo RaspBee e Phoscon Gateway presentano molti punti in comune.

Per prima cosa installiamo il software di controllo e gestione. Se stiamo utilizzando Hassio troveremo l’addon deCONZ nella repository ufficiale: questo addon è stato pubblicato da poco, per cui io sto ancora utilizzando il precedente reso disponibile da marthoc. La configurazione in questa fase è comunque analoga e si limita ad indicare il percorso usb-seriale sul quale la chiavetta ConBee è collegata: in genere /dev/ttyUSB0. A seconda dell’addon che utilizzate potreste dover scegliere anche la porta su cui rendere disponibile l’interfaccia web di PhosconApp e quella di comunicazione per le API: scegliete pure liberamente, l’importante è che le memorizziate perché dovranno essere costanti nella configurazione di Home Assistant.

N.B.: Se utilizzate soluzioni più “esotiche” come Intel NUC con Proxmox o simili, ricordate di consentire l’accesso della porta USB alla Virtual Machine dove è in esecuzione Home Assistant!

Una volta avviato e configurato l’addon portiamoci all’indirizzo http://<ip-di-hassio>:<porta-web-scelta> e, dopo una fase di ricerca gateway, ci troveremo di fronte ad una schermata simile:

Cliccando sull’indicazione del ConBee potremo entrare all’interno dell’interfaccia di comunicazione (lo username e la password di default sono delight/delight). Una volta sbrigate le formalità iniziali (come il cambio password) potremo ad esempio creare un gruppo di luci, ma questo ha senso solo se intendiamo usare PhosconApp come interfaccia di controllo bypassando Home Assistant. In ogni caso vi invito a consultare il manuale ufficiale dell’applicativo, perché ci sono moltissime possibilità di azione e configurazione anche molto interessanti.

Pairing dei Dispositivi

Per quanto riguarda i nostri primi abbinamenti (o meglio, pairing) con dispositivi ZigBee, la procedura cambia leggermente a seconda che si tratti di luci, interruttori o sensori. Cliccando sull’hamburger in alto a sinistra accederemo al menu e si apriranno Settings e Devices. Il primo ovviamente ci permette di intervenire sui parametri dell’applicazione (tema, lingua) e del ConBee stesso (canale di trasmissione, backup nodi, connessione ad applicazioni di terze parti). Il secondo, Devices, è quello che ci fornisce una panoramica sui dispositivi che abbiamo abbinato al sistema, divisi per categoria.

Attenzione, un paio di precisazioni: i pulsanti Xiaomi e Aqara vengono categorizzati dal sistema come sensori e può succedere che non siano visibili nell’elenco, nonostante funzionino perfettamente: questo comportamento è in corso di correzione da parte del team di sviluppo. Inoltre i sensori porta-finestra Aqara mostrano anche un dato relativo alla temperatura la cui affidabilità ed utilizzo sono ancora verificare (il dato non viene inoltrato ad Home Assistant).

Per avviare il processo di pairing basterà selezionare “Add new sensor” e scegliere il produttore se indicato (altrimenti Other). Ottenuta la schermata di attesa qui mostrata, armarsi di santa pazienza.

Questo processo può essere più o meno frustrante a seconda del dispositivo che andrete ad abbinare. Vi riporto alcuni suggerimenti derivanti dalla mia diretta esperienza, che spero possano esservi utili:

  • Xiaomi/Aqara: Se avete precedentemente utilizzato il dispositivo, sarà necessario resettarlo premendo a lungo il pulsante apposito con una graffetta o simili, fino ad ottenere un lampeggiamento rapido. Tenete premuto il reset per qualche secondo finché non si innesca una sequenza di lampeggiamento sul led blu, poi smettete di schiacciare e fate un singolo click sul reset. Possono passare alcuni secondi prima che PhosconApp vi dia luce verde per il processo di abbinamento.
  • Philips Hue: Anche in questo caso, se avete abbinato in precedenza le lampadine, dovrete resettarle seguendo questo procedimento.

In tutti i casi: siate pazienti! L’operazione potrebbe prendere un po’ di tempo ma se un prodotto è segnato come compatibile nella lista e non funziona vorrà dire che non avete completato i passaggi nell’ordine e nel modo corretto. Quindi provate, riprovate e provate ancora.

Integrazione in Home Assistant

Per quanto riguarda l’integrazione in HA, il procedimento è rapido e indolore. Esiste un componente apposito che va configurato passando da Impostazioni → integrazioni → Configura nuova integrazione → deCONZ.

Basterà quindi aprire una nuova finestra del browser su PhosconApp nella scheda Settings → Gateway → Advanced → Authenticate App e concludere poi la configurazione su Home Assistant.

Al termine della procedura, Home Assistant sarà in grado di comunicare con tutti i dispositivi abbinati al ConBee: se ne aggiungerete di nuovi questi saranno presenti su HA al riavvio successivo o mediante l’utilizzo del servizio deconz.refresh_devices. Vi consiglio quindi di dare un’occhiata al menu Stati <> presente in “Strumenti per sviluppatori” su Home Assistant, per prendere nota dell’entity_id con cui verranno rappresentati i vostri devices abbinati al ConBee. In alcuni casi viene replicato il nome “descrittivo” utilizzato in PhosconApp, reso minuscolo con gli spazi sostituiti da underscores:

In altri casi viene assegnato un nome arbitrario, come binary_sensor.openclose_13, ma le entities manterranno sempre la loro classe di appartenenza (binary_sensor, light, sensor).

Switches

Un discorso a parte meritano gli switches, che includono anche i bottoni Xiaomi/Aqara. Questi, infatti, non vengono registrati come entities all’interno di Home Assistant (a differenza che con l’uso tramite il gateway proprietario). Come specificato nella documentazione, eseguendo un doppio click (ad esempio) questa azione verrà registrata nell’event stream di HA insieme al codice rappresentativo dell’azione eseguita. Nel caso dei classici bottoni Xiaomi gli eventi generati saranno quindi:

Event Button Action
1000 One initial press
1001 One single hold
1002 One single short release
1003 One single hold release
1004 One double short press
1005 One triple short press
1006 One quad short press
1010 One five+ short press

Ed ecco un paio di esempi di come vengono memorizzati gli eventi:

  • 15:36:00:400 button 1000 Normal press
  • 15:38:00:912 button 1004 Double press

Un vantaggio notevole è che il nome del bottone sarà sempre quello da noi assegnato all’interno dell’interfaccia PhosconApp: questo renderà semplice scrivere delle automazioni funzionanti, come spiegherò a breve. Vi faccio notare che il sistema riferisce dal click singolo fino a “5+” click, creando sei possibili inneschi per ogni pulsante (a patto di riuscire a ricordarseli tutti!).

Esempi di automazioni

La necessità di lavorare sull’event stream di HA rende solo un poco più difficile utilizzare i bottoni come inneschi per automazioni: l’event trigger non è tra i più utilizzati perché raramente è necessario. Nella forma base, per accendere la luce potremmo usare:

- alias: Accendi Luce
  initial_state: 'on'
  trigger:
    platform: event
    event_type: deconz_event
    event_data:
      id: xiaomi_switch_a
      event: 1000
  action:
    service: light.toggle
    data:
      entity_id: light.cucina

id non sarà nient’altro che il nome che abbiamo dato al bottone lato ConBee (sempre reso minuscolo, con gli spazi convertiti in underscore), mentre event è il codice del tipo di click citato in precedenza.

Dal momento che noi dello SmartHome Channel amiamo complicarci sempre un pò la vita, potremmo anche scrivere un’automazione che fa uso degli amati templates per eseguire azioni diverse a seconda del numero di volte che si preme il pulsante. È possibile ad esempio replicare il funzionamento dei tasti di controllo di un media_player registrato in HA per fare play/pausa e cambiare traccia.

- alias: Pulsante Sonos
  initial_state: 'on'
  trigger:
    platform: event
    event_type: deconz_event
    event_data:
      id: xiaomi_switch_a
  action:
    service_template: >
      {% if trigger.event.data.event == 1000 %} media_player.media_play_pause
      {% elif trigger.event.data.event == 1004 %} media_player.media_next_track
      {% elif trigger.event.data.event == 1005 %} media_player.media_previous_track
      {% endif %}
    data:
      entity_id: media_player.cucina

Conclusione

Il gateway di Dresden Elektronik ha sicuramente grandi potenzialità e mi ha permesso di eliminare in un colpo solo gli hub di Philips e Xiaomi. Questa scelta ha però delle conseguenze, che vanno attentamente valutate prima di decidere di seguire questa strada:

Vantaggi Svantaggi
+ Pieno controllo dei nostri dati, privacy ai massimi livelli - Impossibilità di aggiornare i firmware dei device
+ Semplificazione delle interfacce di collegamento su HA - Piena dipendenza da HA per tutte le applicazioni smart
+ Maggiori possibilità di controllo a livello pulsanti - Impossibilità di utilizzare le app di cloud “nativo”
+ Risparmio energetico
+ Risparmio economico (Hub non necessari)
+ Grande versatilità di scelta per i device abbinabili

Come ho scritto sopra, uno dei principali vantaggi di questa soluzione è la possibilità di smarcarsi dai server “proprietari” (soprattutto quelli cinesi di Xiaomi, ma anche Philips, Osram, Ikea, ecc..). Purtroppo in questi ultimi mesi è prepotentemente tornato alla ribalta il sospetto di controllo degli apparati di rete prodotti in Cina da parte del loro governo, e in questo modo non dovremo temere che alle aziende possano essere sottratte le nostre informazioni riservate. Questo sistema ci permette di mantenere tutto in locale, dando a noi il pieno controllo sui dati e rendendo possibile l’uso dei dispositivi e delle automazioni anche in assenza di connessione internet. Sul fronte negativo l’aspetto più pesante è forse l’impossibilità di aggiornamento firmware dei device ZigBee: sta a voi valutare quanto questo possa essere considerato un problema. Personalmente credo che sia maggiormente importante il “nodo” di collegamento tra la rete ZigBee e quella basata sul protocollo IP, cioè il ConBee. Il firmware (e il software del REST-plugin) di quest’ultimo sono aggiornati con una certa frequenza, garantendo una sicurezza che è a mio avviso sufficiente.

Acquista ConBee su Amazon

Autore:
Alberto Zamboni (@albyzambo)

Revisione:
Massimiliano Latella (@lamax)
Maurizio Natali (@simplemal)

SmartHome Channel

Special Team - I SaggiUtenti del canale #SmartHome sul nostro Slack uniti per creare guide e recensioni dedicate all'automazione. Partecipa anche tu entrando nel gruppo effettuando una donazione dal SaggioSupporto o discutendo con noi nel Canale Telegram SmartHome Italia