Al momento stai visualizzando ZHA: ZigBee in Home Assistant

ZHA: ZigBee in Home Assistant

  • Autore dell'articolo:
  • Categoria dell'articolo:Home Assistant
  • Commenti dell'articolo:19 commenti
  • Ultima modifica dell'articolo:21 Marzo 2021

In questo articolo impareremo a conoscere ed utilizzare Zigbee Home Automation, ovvero ZHA: l’integrazione nativa di Home Assistant per utilizzare dispositivi ZigBee.

Come abbiamo appreso nel primo articolo dedicato a ZigBee (se non l’hai letto fallo ora: Home Assistant e ZigBee: orientiamoci ) ZHA è l’integrazione più performante ed intuitiva, sebbene abbia ancora aree migliorabili. Per me è quindi la prima scelta da utilizzare, a meno che non ci siano motivi specifici come coordinator o dispositivi esotici non correttamente gestiti.

Impareremo quindi come aggiungere, configurare e gestire i dispositivi con ZHA. Tieniti forte, partiamo!

Prerequisiti

Se stai migrando da un'altra integrazione zigbee (Deconz, Zigbee2mqtt)

E’ importante capire che i coordinato ZigBee espongono normalmente una porta seriale, niente di più.
I coordinator USB lo fanno tramite una seriale virtuale over USB mentre gli hat per Raspberry Pi usano la UART presente nel Raspberry Pi stesso.

Per definizione una seriale può essere aperta da un unico chiamante, motivo per il quale se hai installato più integrazioni o add-on che ne fanno uso soltanto uno di essi funzionerà, gli altri troveranno la porta occupata.
Ecco perchè se stai migrando da Deconz o Zigbee2MQTT è importante capire che devi eliminare totalmente tali software, prima di procedere ad usare ZHA.

Ma prima di tutto ricorda di fare un backup o uno snapshot, a seconda della versione di Home Assistant che stai usando, questo ti permetterà di poter tornare sui tuoi passi qualora qualcosa andasse storto o ZHA non ti piacesse.

La brutta notizia te la do subito: ogni volta che cambi integrazione ZigBee devi riassociare tutti i tuoi dispositivi. Eh si. Perchè ogni integrazione crea una diversa chiave di criptazione del network. Quindi i backup ti permettono di tornare indietro ma i dispositivi andranno comunque riassociati. E perdi anche dispositivi ed entità che verranno nominati in modo differente (ma li potrai modificare con lo stesso entity_id che avevano precedentemente, non perdendo il funzionamento delle automazioni e degli script)

Una volta fatto il backup dovrai eliminare ogni traccia dell’integrazione che utilizzavi prima.
Se usavi Deconz dovrai disinstallare l’add-on Deconz e l’integrazione Phoscon.
Se stati usando Zigbee2MQTT dovrai disinstallare l’add-on Zigbee2MQTT e, se non ne fai altro uso, il broker MQTT che usavi, oltre in tal caso al client MQTT.

Dopo esserti assicurato che nessuno dei tuoi dispositivi sia sopravvissuto all’ecatombe, effettua un riavvio del supervisor. Questo ti assicurerà che non rimane codice in esecuzione che fa uso della seriale.

Se stai usando un coordinator Conbee / Raspbee

Se intendi usare ZHA con il coordinator di Dresden Elektronik Conbee II come consiglio nel primo articolo dedicato alla scelta dell’integrazione zigbee di Home Assistant, assicurati che il firmware della chiavetta o dell’hat siano all’ultima versione.

Il metodo più semplice per farlo è collegando la chiavetta ad una porta USB del tuo PC Windows.

Scarica l’ultima versione dell’utility GCFFlasher (attualmente la 3.10) che trovi a questa pagina e scompattane il contenuto in una cartella, diciamo c:\conbee.

Se stai usando Windows 10 non hai bisogno di alcun driver. Se invece utilizzi Windows 7 dovrai scaricare ed installare il seguente driver (se hai bisogno di ulteriori informazioni consulta la pagina di aiuto).

Scarica l’ultimo firmware per il tuo dispositivo da questa pagina. Nel caso di una Conbee II limitati ai file il cui nome inizia con deCONZ_ConBeeII e la cui estensione sia .bin.GCF. Salva il file nella cartella creata sopra c:\conbee.

Ora apri un prompt dei comandi, accedi tramite cd \conbee alla cartella creata prima e verifica che la chiavetta venga riconosciuta correttamente tramite il seguente comando:

GCFFlasher -l

Se la Conbee II viene vista correttamente sapremo la COM virtuale che dovremo usare:

Utilità gcfflasher

A questo punto chiediamo di aggiornare il firmware con il seguente comando (sostituisci il nome del firmware con quello scaricato precedentemente):

GCFFlasher.exe -f deCONZ_ConBeeII_0x26680700.bin.GCF

Dovresti vedere il progresso dell’aggiornamento e il suo termine. Se non accade nulla significa invece che il firmware è già aggiornato.

Aggiunta dell’integrazione ZHA

Prima di partire tieni sottomano la pagina di documentazione ufficiale, come sempre è il posto giusto dove cercare informazioni in caso di problemi o dubbi e per verificare che il tuo coordinator sia supportato.

Aggiungere l’integrazione è semplicissimo. Vai in Impostazioni -> Integrazioni e clicca il tasto + AGGIUNGI INTEGRAZIONE in basso a destra.
Nella selezione delle integrazioni posizionati al termine della lista o seleziona “zigbee” nella ricerca. La voce su cui cliccare è Zigbee Home Automation.

Aggiunta dell'integrazione ZHA

Se ZHA rileva il coordinator

A questo punto se ZHA rileva automaticamente una periferica Zigbee ti proporrà di utilizzarla (troverai il tuo coordinator nella casella a discesa):

Percorso seriale durante l'aggiunta di ZHA

Una volta premuto INVIA… hai finito di configurare ZHA, che ti presenterà il riassunto con la scelta dell’area di casa dov’è presente il coordinator:

Integrazione ZHA aggiunta correttamente ad Home Assistant

Se ZHA non rileva il coordinator

Nel caso in cui ZHA non rilevasse il coordinator (perchè ad esempio è remoto, come per il Sonoff ZBBridge, oppure perchè la seriale virtuale esposta è tenuta occupata da un add-on) ti verrà prima chiesto di selezionare il tipo di coordinator installato tramite la seguente finestra (nella schermata è selezionata l’opzione da scegliere per la Conbee II):

Selezione tipo di coordinator durante l'aggiunta di ZHA a Home Assistant

Premendo INVIA ti verrà quindi richiesto di inserire il percorso della porta seriale da utilizzare (o altri parametri con altri tipi di coordinator):

Percorso seriale durante l'aggiunta di ZHA ad Home Assistant

Ma dove trovare il percorso?

Se hai Home Assistant Operating System puoi andare in Supervisor, Sistema e nel pannello di destra Host cliccando sui tre puntini clicca sulla voce Hardware e scorri fino a trovare la voce normalmente chiamata - name: ttyACM0

cerca la riga seguente che inizia con by_id e copia il contenuto dell’intera riga successiva, facendo attenzione a scorrere finché la riga non termina.

Se hai Home Assistant Core digita il seguente comando dalla shell:

# ls /dev/serial/by-id/*

Nel caso in cui ZHA riuscirà a colloquiare con il coordinator vedrai il riassunto e la scelta dell’area di casa alla quale assegnare il coordinator, come nel paragrafo precedente:

Integrazione ZHA aggiunta correttamente ad Home Assistant

Se tutto è andato bene ti ritroverai con un’integrazione in più che si mostra più o meno così:

Integrazione ZHA: Zigbee Home Automation di Home Assistant

Configurazione di ZHA

ZHA è talmente semplice che non necessita di configurazione obbligatoria.
Puoi comunque aggiungere delle opzioni tramite configuration.yaml. L’unica opzione che ti consiglio di aggiungere prima di iniziare è il canale Zigbee. Scegli con cura un canale che non si sovrapponga con il tuo Wifi e con quelli vicini di una certa potenza. Se vuoi più informazioni a riguardo ti consiglio di leggere questo articolo: ZigBee: copertura, router, canali.

Per selezionare un canale aggiungi il seguente codice al tuo configuration.yaml:

zha:
  zigpy_config:
    network:
      channel: 25             # Numero del canale che desideri utilizzare

Dopo ogni modifica alla configurazione del dispositivo ricorda di riavviare Home Assistant.

Aggiungere un dispositivo

Siamo ora pronti ad aggiungere il nostro primo dispositivo ZigBee ad Home Assistant.
Per farlo abbiamo due possibilità:

  1. Cliccando il link CONFIGURA dell’integrazione e quindi il tasto + AGGIUNGI DISPOSITIVO in basso a destra.
  2. Cliccando il link n dispositivi dell’integrazione, selezionando il coordinator o il router che vuoi usare per il collegamento e infine cliccando sul link AGGIUNGI DISPOSITIVI TRAMITE QUESTO DISPOSITIVO
Aggiunta di un dispositivo tramite un router Zigbee con integrazione ZHA in Home Assistant

In entrambi i casi si attiverà la modalità di aggiunta dispositivi:

Ricerca dispositivi Zigbee con integrazione ZHA in Home Assistant

Se vuoi vedere cosa sta avvenendo dietro alle quinte premi il link in alto a destra SHOW LOGS. Può essere utile se sospetti ci sia un malfunzionamento durante la ricerca.

Questa fase dura un paio di minuti nei quali è permessa l’aggiunta di dispositivi alla tua rete zigbee. Durante questi minuti dovrai resettare il dispositivo da associare (ognuno ha la sua modalità, leggi tra le istruzioni del dispositivo) in modo che si accoppi con le chiavi di protezione della rete ed entri a far parte del tuo network zigbee.

Quando il dispositivo viene rilevato appare una card blu. A quel punto ZHA sta ancora comunicando con esso per prelevarne i dati e le peculiarità. Al termine di questa interrogazione la card diventerà verde ad indicare che l’operazione è terminata. L’unica operazione residua sarà dare un nome identificativo al dispositivo e assegnarlo ad un’area della casa tramite gli appositi campi nella card.

Il mio personale consiglio è di usare sempre la seconda modalità (AGGIUNGI DISPOSITIVI TRAMITE QUESTO DISPOSITIVO) partendo dal coordinator, quando colleghi dispositivi vicini ad esso, oppure partendo dal router che vorresti che il dispositivo utilizzi per comunicare poi fino al coordinator. Questo perchè alcuni dispositivi non rispettano al 100% le specifiche Zigbee e tendono a rimanere collegati al router con cui sono stati aggiunti.

Mappa dei dispositivi Zigbee

ZHA, come tutte le integrazioni Zigbee, offre la possibilità di mostrare una mappa dei dispositivi collegati che può essere utile per capire la topologia di rete e identificare eventuali problemi.

Nel momento in cui scrivo (ver. 2021.3.4) la mappa di ZHA è ancora piuttosto acerba, graficamente poco gradevole e non priva di difetti. Avrà ampio margine di miglioramnto nelle versioni future.

Per visualizzarla basta andare in Impostazioni -> Integrazioni -> Zigbee -> Configura -> Visualizzazione:

Menu configurazione integrazione ZHA in Home Assistant

La mappa si presenta quindi in questo modo:

Mappa dei dispositivi Zigbee con ZHA in Home Assistant

E’ possibile zoomarla usando la rotella del mouse o il pinch to zoom su dispositivi touchscreen e scrollare tenendo premuto il tasto sinistro. Aumentandone l’ingrandimento si vedranno anche i dati di ogni dispositivo e dei link di collegamento:

Ingrandimento mappa dei dispositivi Zigbee con integrazione ZHA in Home Assistant

Come leggere la mappa

Ci sono tre tipi di simboli sulla mappa:

  • Rettangolo: rappresenta il coordinator
  • Ovale: rappresenta un dispositivo router che contribuisce alla rete mesh
  • Cerchio: rappresenta un end-device, solitamente dispositivi a batteria che non contribuiscono alla rete mesh

All’interno di ognuno di essi possiamo trovare:

  • Il nome assegnato al dispositivo
  • L’indirizzo IEEE (puoi pensarlo come il parallelo del MAC address in versione Zigbee. Esso rappresenta infatti univocamente un dispositivo a livello globale)
  • Il tipo di dispositivo (Router o EndDevice)
  • L’indirizzo NWK (puoi pensarlo come il parallelo dell’indirizzo IP, univoco all’interno della tua rete Zigbee)
  • La descrizione del modello di dispositivo

Le linee che collegano i dispositivi tra loro sono i possibili collegamenti che i dispositivi utilizzano per comunicare e formano una strada tra il dispositivo di partenza e quello di destinazione.
Il colore delle linee è verde se il valore di LQI è superiore a 192, giallo se è tra 129 e 192, rosso se è minore o uguale 128 e grigio se è davvero troppo basso. Nel capitolo seguente sarà spiegato il significato di LQI.

Allo stato attuale c’è un bug nella mappa che non mostra molti link tra il coordinator e gli end device collegati direttamente ad esso.

Identificare la qualità di comunicazione

Per capire quanto un dispositivo comunichi bene è necessario andare nella card Informazioni sul dispositivo nei device di Zigbee:

Informazioni sulla qualità del segnale di un dispositivo Zigbee: RSSI e LQI con integrazione ZHA in Home Assistant

LQI è l’acronimo di Link Quality Indication ed è un dato cumulativo che ogni dispositivo registra e rappresenta il numero di errori di trasmissione. Il suo valore va da 0 a 255, dove 255 significa comunicazione perfetta, valori più bassi indicano una incidenza di errori di comunicazione sempre più elevati.
RSSI è l’acronimo di Received Signal Strength e misura la potenza ricevuta in antenna grezza, senza tenere in conto eventuali disturbi. E’ negativa e più vicina allo zero significa più potente. -50 è migliore di -70.

Normalmente al decrescere di RSSI decresce LQI. Ma LQI può decrescere anche se RSSI non varia, ad esempio se vi sono disturbi di comunicazione.

I gruppi Zigbee

Con ZHA è possibile creare dei gruppi di dispositivi per poterli comandare in modo simultaneo come fossero un tutt’uno.
Si, certo, si potrebbero raggruppare in un group oppure in un light group ma la peculiarità di creare un gruppo nell’integrazione è che possiamo utilizzare tale gruppo direttamente da dispositivi Zigbee di comando, come vedremo nel prossimo articolo riguardante il binding. Ovviamente il gruppo sarà anche esposto come entità direttamente utilizzabile in automazioni e script come fosse un light group.

Le singole entità rimarranno comandabili, interrogabili e utilizzabili nelle automazioni anche singolarmente ma in più avrai un gruppo che ti permetterà di accendere tutte le lampadine alla stessa intensità e alla stessa temperatura/colore (qualora lo supportino).
Ti consiglio quindi di usare questa funzione per luci omogenee Zigbee e non group o light group.

Per accedere ai gruppi andare in Impostazioni -> Integrazioni -> Zigbee -> Configura -> Gruppi:

Gruppi Zigbee in configura integrazione

In tale sezione troverai i gruppi configurati:

E’ probabile che troverai dei gruppi già esistenti, come i “no name group” dello screenshot sopra. Ti consiglio di non rimuovere questi gruppi ma semplicemente di ignorarli

Come sempre per aggiungere un gruppo usiamo il tasto in basso a destra + AGGIUNGI GRUPPO:

Aggiungi gruppo dispositivi Zigbee con integrazione ZHA in Home Asssistant

Non ci resta che inserire un nome per il gruppo (che poi sarà trasformato per essere anche l’entity_id) e selezionare i dispositivi che faranno parte del gruppo:

Parametri aggiunta gruppo dispositivi Zigbee con integrazione ZHA di Home Assistant

Non ha senso selezionare dispositivi di tipo diverso per raggrupparli in un gruppo zigbee. E’ invece utile creare gruppi di luci, gruppi di smart plugo gruppi di qualunque dispositivo che si ha intenzione di comandare contemporaneamente.

Gestione dei cluster

Normalmente questo argomento è piuttosto avanzato ma è bene sapere che i cluster (set di funzioni resi standard da Zigbee Alliance) possono essere gestiti dalla pagina del dispositivo. Troviamo questa funzione tramite il link GESTISCI CLUSTER:

Gestione dei cluster

Si aprirà un’interfaccia con molti dati, limitiamoci alla prima: Clusters:

Interfaccia comunicazione attributi dei cluster con integrazione ZHA di Home Assistant

I clusters sono insiemi di attributi con valore raggruppati per tipologia omogenea. Tali valori degli attributi possono essere letti e, in alcuni casi, scritti nel dispositivo.
Selezionando una voce in Clusters, ad esempio Basic, apparirà la sezione sottostante dove poter selezionare un attributo del cluster. Selezioniamo ad esempio manufacturer, che ci indicherà il produttore del dispositivo, e premiamo OTTIENI l’ATTRIBUTO ZIGBEE per interrogarne il valore dal dispositivo stesso.
Il valore, se l’operazione va a buon fine, verrà scritta nella casella Valore.

Qualora si volesse modificare il valore di un attributo (solo se sai esattamente cosa si sta facendo!) inserisci il nuovo valore che desideri impostare nella casella Sostituzione codice produttore e premi IMPOSTA L’ATTRIBUTO ZIGBEE.

Alcuni dispositivi permettono infatti di configurarne il comportamento tramite attributi, come la sensibilità, il tempo o altro ancora.

Aggiornamenti OTA dei dispositivi Zigbee

ZHA permette l’update automatico dei firmware dei dispositivi che rendono pubblici i propri aggiornamenti.

Al momento in cui scrivo solo Ikea e Ledvance rendono disponibili in modo chiaro i propri aggiornamenti e sono pertanto gli unici dispositivi a poter ricevere aggiornamenti automatici OTA (Over The Air).

Come riportato dalla pagina ufficiale di ZHA, per default gli aggiornamenti sono disabilitati. Per abilitarli basterà aggiungere alla nostro configuration.yaml (o in un package) il seguente codice:

zha:
  zigpy_config:
    ota:
      ikea_provider: true                        # Auto update Trådfri devices
      ledvance_provider: true                    # Auto update LEDVANCE devices
      #otau_directory: /path/to/your/ota/folder  # Utilize .ota files to update everything else

Dopo ogni modifica ai parametri OTA sarà necessario riavviare Home Assistant perchè i nuovi parametri abbiano effetto.

La terza voce commentata otau_directory permette di specificare una cartella dove salvare i firmware scaricati personalmente, se si desiderasse utilizzarli per gli aggiornamenti.

Molto più comodo è invece attivare ikea_provider e/o ledvance_provider come nell’esempio sopra. In tal modo verrà automaticamente effettuato il controllo della versione firmware di ogni dispositivo, scaricato automaticamente ogni eventuale aggiornamento e applicato ai dispositivi senza nulla chiedere.

Un aggiornamento alle lampadine smart le fa normalmente spegnere per qualche decina di secondi per poi riaccendersi aggiornate.
Per sapere se un device è stato aggiornato sarà necessario verificare la versione firmware, accessibile dalla pagina del dispositivo Zigbee, prima e dopo il presunto aggiornamento:

Versione firmware dispositivi zigbee

Cosa fare in caso di problemi con ZHA

Quando le cose non vanno come devono, ad esempio il coordinator non funziona, il join dei dispositivi non va a buon fine o per qualunque problema è possibile abilitare la modalità di debug delle varie componenti di cui ZHA. Di seguito il codice da inserire in configuration.yaml o in un package:

logger:
  default: info
  logs:
    homeassistant.core: debug
    homeassistant.components.zha: debug
    bellows.zigbee.application: debug
    bellows.ezsp: debug
    zigpy: debug
    zigpy_cc: debug
    zigpy_deconz.zigbee.application: debug
    zigpy_deconz.api: debug
    zigpy_xbee.zigbee.application: debug
    zigpy_xbee.api: debug
    zigpy_zigate: debug
    zigpy_znp: debug
    zhaquirks: debug

In caso di problemi con il coordinator o con il pairing di dispositivi sconsiglio di attivare tutte le opzioni, altrimenti il log diventerà molto prolisso e cercare le informazioni molto noioso. In particolare è probabile che NON ti interessi abilitare homeassistant.core, zhaquirks (molto prolisso! Attivare quest’ultimo solo se stai analizzando le peculiarità di un device zigbee non aderente alle specifiche zigbee)

Una volta attivate le voci desiderate riavviare Home Assistant, effettuare le operazioni che generano il problema e salvare una copia del log, normalmente presente in config/home-assistant.log.

Non lasciare attivo il log senza un motivo a lungo termine perchè il log generato è molto più ampio e concorre al wearing del supporto di memorizzazione, specialmente se hai solo una scheda SD su Raspberry Pi (in tal caso ti consiglio di leggere questo articolo)

Se pensi di postare il log su di un gruppo Facebook assicurati di utilizzare un servizio come PasteBin per inserire il codice e postare solo il link di pastebin al tuo codice. In tal modo è molto più leggibile che incollarlo in un post e faciliti la vita a chi vorrà darti una mano nell’analisi.

Ulteriori informazioni per approfondire ZHA

Ti è piaciuto questo contenuto?

Se ti è stato utile l’articolo che hai letto potresti pensare di darmi una mano offrendomi qualche caffè!
Oltre ad aiutarmi a star sveglio nelle nottate di ricerche e scrittura mi daresti una mano concreta nel sostenere le spese del server web, incentivandomi a produrre altri contenuti di qualità.

Puoi usare Paypal:

Oppure Buymeacoffee:

Henrik Sozzi

Sono un analista programmatore per lavoro e per passione. Amo la domotica, la stampa 3D e la tecnologia in generale.

Questo articolo ha 19 commenti.

  1. giacomo

    chiavetta cc2530 + hassio + rasp.3b + dispositivi LUMI, tutto ok fino a quando non spengo il rasp, all’accensione devo riconfigurare tutti i dispositivi

    1. Henrik Sozzi

      Potrebbe essere la SD che ha esaurito il suo ciclo vitale. E’ abbastanza frequente che quando capiti le SD vengano lette ma le scritture non cambino quel che sta scritto nel supporto, sebbene sembri andare a buon fine. E quindi quando riparte il Raspberry ricarica l’elenco di dispositivi dalla SD che… non c’è.
      E’ l’unica spiegazione che mi viene in mente.

  2. Salvo

    Problema coordinator in seguito ad aggiornamento del CORE. Ho questo problema da qualche giorno in seguito ad uno degli ultimi aggiornamenti del Core. Avevo installato appena prima il SO 7.0 e tutto funzionava ancora. Come chiavetta ho una cc2530+cc2592 e fino a prima dell aggiornamento tutto andava perfettamente con zha e i vari sensori Zigbee.

    Dopo aver visto che non funzionava ho subito provato a fare un restore presggiornamenti (ne ho provati diversi andando a ritroso) ma non ho risolto.

    In maniera più drastica ho proprio usato uno snapshot della macchina virtuale su cui gira HA aggiornata ad un paio di mesi prima, quando tutto funzionava e chiaramente dopo l’avvio NON HO fatto nessun aggiornamento, eppure, zha continua a dare lo stesso problema. Sembra un errore nel rilevare il dispositivo o a dialogarci, tuttavia ho testato un’altra chiavetta (gemella) e anche con questa fa la stessa cosa.

    Ho provato a creare da zero una installazione pulita e non sono riuscito a risolvere.

    Consigli?

    1. Henrik Sozzi

      Ciao Salvo, secondo me hai intuitivamente fissato l’aggiornamento del core come causa del malfunzionamento ma secondo me hai preso un abbaglio con qualcosa di concomitante. Se fosse stato il core tornando indietro sarebbe tornato a funzionare. Ulteriore indizio che rafforza questa tesi l’uso di un’altra chiavetta gemella che non funziona.
      Da quel che scrivi deduco che utilizzi un virtualizzatore come Proxmox in cui gira la VM di HA non so in che salsa. Ad ogni modo è già successo diverse volte in passato che, non so perchè, forse aggiornando l’host con Proxmox, la condivisione delle perfiferiche USB nella VM non funzionasse più correttamente o non avvenisse proprio. Ti consiglio di focalizare l’attenzione lì, piuttosto.
      Come test puoi accedere alla porta dev (se usi Core accedi normalmente alla shell, se usi HassOS accedi alla porta dev 22222 come spiegato in un mio articolo o alla console fisica) e vedi se trovi in /dev il dispositivo che hai configurato in ZHA (dovresti vederlo nella scheda delle integrazioni, come titolo dove c’è ZHA). Se non c’è significa che l’USB non è assegnato alla VM dal virtualizzatore.
      Altra cosa che puoi fare per cercare di capire è guardare cosa dice il LOG di HA riguardo a ZHA. Magari trovi degli errori che ti aiutano a capire in che direzione andare. Se non trovi voci inerenti prova ad aumentare la quantità di log, c’è la sezione specifica nella pagina della doc.
      Ulteriori opzioni riguardo a problemi se usi core o supervised le trovi in fondo alla pagina della doc.
      In bocca al lupo.

  3. Claudio

    Salve, avrei una domanda. Ho diversi dispositivi collegati tramite cc2531 al mio hub home assistant e utilizzo ZHA come integrazione. Il problema è che funziona tutto perfettamente ma non ho la possibilità di settare l’attributo startup on off in quanto il valore dell’attributo risulta None. Quando va via la corrente in pratica le lampadine si accendono tutte al ritorno della corrente e vorrei il contrario. Queste lampadine sono perfettamente settabili tramite app tuya per ricordare l’ultimo stato quindi questa funzione fa parte del loro firmware. Ti ringrazio se vorrai darmi un qualche suggerimento a riguardo. Un saluto.

    1. Henrik Sozzi

      Ciao Claudio, ho lo stesso problema con le lampadine Ikea. Indagando tempo fa ho scoperto che queste non supportano l’impostazione che citi te per cui ho “risolto” (in realtà è un workaround…) con un’automazione che all’avvio di HA spegne tali lampadine (ne uso tre in gruppo sul tavolo in cucina come luce “in più”). Mi hai dato l’occasione per verificare se con gli aggiornamenti magari è stato implementato…
      Ad ogni modo se le tue lampadine sai che supportano tale feature in teoria dovresti andare in Configurazioni -> Integrazioni -> clicca sui dispositivi di ZHA, clicca sul tuo dispositivo, clicca sul link gestisci cluster e da lì selezioni come Cluster (prima casella) OnOff, in Attributi del cluster selezionato: start_up_on_off e per vedere cosa c’è impostato premi OTTIENI L’ATTRIBUTO ZIGBEE. Il valore lo trovi nella casella Valore. I possibili valori sono: StartUpOnOff.On, StartUpOnOff.Off e StartUpOnOff.PreviousValue.
      Per aggiornarne il valore, invece, devi inserire nella stessa casella Valore (NON in quella sotto Sostituzione codice produttore) i seguenti valori (ref):

      • 0x00 per impostare Off
      • 0x01 per impostare On
      • 0xff per impostare PreviousValue

      Quindi scrivi 0xff (per esempio) in Valore e premi IMPOSTA L’ATTRIBUTO ZIGBEE. Per verificare che l’abbia preso premi OTTIENI L’ATTRIBUTO ZIGBEE e verifica che il valore sia quel che ti aspetti.
      Fammi sapere se funziona, io provo con le mie Ikea! 🙂

  4. Claudio

    Grazie mille per la risposta. Allora, ho appena provato come consigliato ma cliccando su ottieni l’attributo zigbee e avendo selezionato start_up_on_off, mi viene sempre restituito il valore None (con tutti i miei dispositivi zigbee). Se provo ad impostare uno dei tre valori suggeriti 0x00 0x01 0xff non succede nulla e il valore rimane su None. Ho svariati dispositivi zigbee, tra cui un sonoff zbmini, diversi relè tuya, strisce led tuya e lampadine ma restituiscono tutti il medesimo valore None. A questo punto il problema risiede sul mio Dongle USB suppongo, il quale magari non permette la lettura e la scrittura di questi valori. Forte di questo pensiero ho infatti provveduto ad acquistare un Sonoff USB dongle Zigbee 3.0 con il quale magari risolverò il problema. Testerò il tutto appena riceverò il Dongle e Vi terrò aggiornati in merito. Ad ogni modo accetto volentieri ulteriori suggerimenti. Grazie mille 🙂

  5. Ivan Cagol

    Ciao Henrik, sto avendo problemi con ZHA, questo è l’errore:

    Logger: homeassistant.components.zha.core.gateway
    Source: components/zha/core/gateway.py:152
    Integration: Zigbee Home Automation (documentation, issues)
    First occurred: 15:32:20 (25 occurrences)
    Last logged: 16:00:56

    Couldn’t start deCONZ = dresden elektronik deCONZ protocol: ConBee I/II, RaspBee I/II coordinator
    Traceback (most recent call last):
    File “/usr/local/lib/python3.9/asyncio/tasks.py”, line 492, in wait_for
    fut.result()
    asyncio.exceptions.CancelledError

    The above exception was the direct cause of the following exception:

    Traceback (most recent call last):
    File “/usr/src/homeassistant/homeassistant/components/zha/core/gateway.py”, line 152, in async_initialize
    self.application_controller = await app_controller_cls.new(
    File “/usr/local/lib/python3.9/site-packages/zigpy/application.py”, line 69, in new
    await app.startup(auto_form)
    File “/usr/local/lib/python3.9/site-packages/zigpy_deconz/zigbee/application.py”, line 67, in startup
    self.version = await self._api.version()
    File “/usr/local/lib/python3.9/site-packages/zigpy_deconz/api.py”, line 463, in version
    (self._proto_ver,) = await self[NetworkParameter.protocol_version]
    File “/usr/local/lib/python3.9/site-packages/zigpy_deconz/api.py”, line 428, in read_parameter
    r = await self._command(Command.read_parameter, 1 + len(data), param, data)
    File “/usr/local/lib/python3.9/site-packages/zigpy_deconz/api.py”, line 313, in _command
    return await asyncio.wait_for(fut, timeout=COMMAND_TIMEOUT)
    File “/usr/local/lib/python3.9/asyncio/tasks.py”, line 494, in wait_for
    raise exceptions.TimeoutError() from exc
    asyncio.exceptions.TimeoutError

    puoi aiutarmi?

    1. Henrik Sozzi

      Sembrerebbe la conbee2 che non risponde. Era successo due volte anche a me e non so cosa diavolo l’abbia sbloccata. Avevo provato di tutto, compreso aggiornare il firmware e resettare la chiavetta col suo tool ma niente. Dopo un giorno abbondante… Si è ripresa. Stavo per buttarla dalla finestra. Prova a verificare se il firmware è aggiornato

  6. Mauro

    ciao, ottimo articolo complimenti. Sto pensando di passare da ZHA a zigbee2mqtt perché il primo non mi riconosce correttamente il tipo di valvola termostatica che ho acquistato (e che funziona benissimo con SmartLife). Prima di abbandonare ZHA faccio quindi questo tentativo chiedendoti un suggerimento.

    Uso da anni e funziona benissimo questo ZHA con tutti gli altri miei dispositivi, sfruttando un sonoff bridge patchato tasmota che da una parte “parla zigbee” e dall’altra si espone sulla WIFI attraverso la porta 8888, cui mi connetto da ZHA. Il problema è che ora invece di riconoscere correttamente tutte le entità (sensore di temperatura, umidità, switch on-off, sensore climate per impostare la temperatura…) me ne riconosce solamente 2 “unknown” che già disabilita in fase di pairing. Li posso anche abilitare forzatamente, ma poi mi segnano dei numeri che per me non hanno significato (161 e 45), ma anche lo avessero mi manca sempre l’entità per la regolazione della temperatura. Il device invece è accoppiato correttamente con il nome “_TZE200_a4bpgplm TS0601”.
    Acquistando queste valvole su AliExpress, non hanno nemmeno il nome del fornitore ma hanno sempre funzionato perfettamente, l’unico problema è questo modello (it.aliexpress.com/item/1005003246227640.html -ne ho prese 5 e il problema è con tutte loro, anche testate con HASSIO diversi).

    Devo davvero passare a zigbee2mqtt, installando broker + zigbee2mqtt + tasmota bridge? Che garanzie ci sarebbero che poi anche quello non riconosce questo dispositivo? Mi viene da dire che valga di più investire tempo per cercare di analizzare il problema in questo ambiente, da cui un tuo consiglio sarebbe super utile e gradito.

    Grazie

    1. Henrik Sozzi

      Ciao, puoi cercare il dispositivo sull’elenco non ufficiale (ma il più completo…) https://zigbee.blakadder.com/ su lì scopri se qualcuno l’ha già usato sulle varie piattaforme. Se non c’è non significa necessariamente che non funzioni ma che non è stato provato.
      Se vuoi investire tempo per far funzionare il device su ZHA… bravo! Spirito costruttivo nei confronti della piattaforma e quando possibile che non si ha assoluta urgenza è l’approccio giusto.
      Ti segnalo diversi modi per farlo:

      • Ti crei un tuo quirk, basandoti su uno esistente. I quirk sono file python che definiscono le non conformità con gli standard zigbee di ogni tipo di device esponendole in modo standard a ZHA. Le puoi creare nella cartella config così da modificarlo e testarlo agevolmente ma non ricordo più i dettagli. Tutte le informazioni le trovi comunque qui
      • Chiedi che venga implementato il dispositivo aprendo un issue contenente la firma del device e quel che eventualmente ti chiederanno. Immagino il log di pairing avendo attivato i dettagli di log (nella doc di ZHA c’è scritto come fare). Il repo è sempre questo

      Fammi sapere come va 🙂

  7. Mauro

    Grazie dei preziosi consigli Henrik, ho aperto la issue su zigpy.
    Per quanto riguarda il database ufficioso che hai linkato, in teoria questo modello zigbee.blakadder.com/Haozee_TRV601.html ha lo stesso manufacturer ID e model ID che trovo nella signature del mio (che ho anche inserito nella issue), anche se l’immagine della valvola è leggermente diversa. Sul portale si dice che è stato “testato per ZHA”, però resta il fatto che non viene riconosciuto correttamente, nonostante due installazioni indipendenti di ZHA e 5 valvole diverse.
    Fra l’altro qualcuno ha già segnalato un problema con il riconoscimento di quella valvola (github.com/zigpy/zha-device-handlers/issues/1159) quindi mi sono letto il post, ma a questo punto c’è un aspetto che ancora non ho chiaro: un utente suggerisce di aggiungere una riga dopo la 1061 del file zha-device-handlers/zhaquirks/tuya/ts0601_trv.py. Quindi mi chiedo: dove trovo questo file? Nella cartella /config che apro da Visual Studio Code non vedo una sottocartella zha-device-handlers, tantomeno un file da 1200 righe. Immagino che sia questo il file Python con il quirk di cui parlavi, Herik, ma non posso immaginare che mi debba scrivere un file di queste dimensioni per poi aggiungerci solo una riga con il device ID.

    1. Henrik Sozzi

      L’elenco di blakadder non è perfetto… Anche il mio telecomando Ting è riportato compatibile ma nei fatti non lo è ancora al 100%.
      Per modificare i quirk (io non l’ho mai fatto, vado a memoria di quanto letto tempo fa!) ci sono due modi:

      • Entrare nel container docker del core e andare a modificare il file oppure prendere un file simile, incollarlo e modificare solo quel che si vuole cambiare (questo dovrebbe essere specificato qui).
      • Fare un clone del repo di Home Assistant, prendere il quirk da cui partire nella relativa cartella del clone, copiarlo nella cartella di HA /config/custom_zha_quirks (eventualmente cambiandogli nome se prendi un file di un altro dispositivo) e inserire questa config nel tuo yaml (occhio che nei commenti non mantiene l’indentazione!):
        zha:
        custom_quirks_path: /config/custom_zha_quirks/

        Riferimento
  8. Mauro

    Detto, fatto:
    – scaricato il file che indicavo nel mio messaggio precedente github.com/zigpy/zha-device-handlers/blob/c5f1b2dd8f2a8e69fa2cd5e09bd9683ec4989fad/zhaquirks/tuya/ts0601_trv.py
    – modificato il file aggiungendo la signature del mio dispositivo dopo la riga 1061
    – copiato brutalmente quel file in una cartella /config/custom_zha_quirks che ho creato sul mio server
    – indicato la cartella in configuration.yaml

    Riavviato il server, ha riconosciuto “meglio” la valvola nel senso che vede 6 device invece di 2, compreso il sensore di temperatura e il climate per impostarla. Però per esempio la batteria è vista con un punto esclamativo.

    Ho visto il riferimento che mi hai dato, grazie. Ciò che continuo a non capire è perché mettono una singola frase “in this directory, create the python file with content of the quirk” tralasciando il piccolo particolare di dove si prende il file di partenza: io l’ho preso da quel post che avevo linkato (ma infatti funziona così/così), l’alternativa sarebbe crearne uno da zero da 1300 righe?
    Tu mi hai detto che potrei prenderlo da repo di HA, ma come faccio a identificare quello giusto? E in quale cartella lo trovo, non posso accedere in SSH alla VM Linux e andarmelo a prendere da lì? Ho provato ma non riesco a trovare questa cartella, probabilmente perché dovrei entrare nel container Docker.

    Allora sono andato sul repo di ZHA (non di HA) github.com/zigpy/zha-device-handlers/tree/dev/zhaquirks/tuya e lì ho trovato un file con lo stesso nome, più uno più recente con un nome simile (ts0601_trv_sas.py). Ho preso quest’ultimo, ho visto che non c’era nemmeno lì la mia signature, quindi ho cercato una classe che mi sembrava adeguata (Thermostat_TZE200_c88teujp, ma hanno tutte nomi molto simili), ho aggiunto lì la mia signature, riavviato ma… ahimé sempre uguale, vedo una sola parte dei device.

Rispondi

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.