Guida Chiavetta ZigBee per Hassio
Aggiornamento: 22/03/2020
Aggiunto: rinomina entità e aggiornamenti OTA dei dispositivi supportati
Questo progetto scovato su GitHub vi permette di sbarazzarvi finalmente tu tutti i bridge o gateway proprietari che vi hanno riempito casa. I sensori, le lampade e tutti i dispositivi che comunicano attraverso il protocollo ZigBee finalmente hanno un unico interlocutore. Non sarà più necessario acquistare quei costosissimi dispositivi di controllo per ogni singola marca (Xiaomi / TRADFRI / Hue).
La chiavetta ZigBee permette di controllare i vari dispositivi compatibili attraverso MQTT (necessita quindi l’add-on mosquitto broker).
A questa chiavetta bisognerà installargli un firmware appositamente progettato tramite un degugger e una adattatore. Inserendola nella porta USB del Raspberry farà da ponte tra Home Assistant e i dispositivi ZigBee questa sarà la chiavetta coordinator, se si volesse una copertura maggiore è possibile aggiungere n. chiavette router alla quale avrà un installato un diverso firmware, e sarà sufficiente alimentarla con un comune alimentatore USB per farla funzionare.
Tutte le informazioni le troverete nella guida ufficiale in inglese https://github.com/Koenkk/zigbee2mqtt in alternativa potete trovare altre informazioni nel nostro gruppo telegram HassioHelp, come i materiali da acquistare per l’auto costruzione e quali accortezze prendere oltre ad altri consigli.
Vediamo come procedere per far funzionare la chiavetta in Hassio
1. INSTALLAZIONE ADD-ON MOSQUITTO BROKER MQTT
Installare l’addon Mosquitto broker già presente nella Repositories standard di Hassio, inserendo nella configurazione user e password che vorrete dare al broker che gestirà tutta la comunicazione in Mqtt.
1 2 3 4 5 6 7 8 9 10 |
logins: - username: a_tua_scelta password: a_tua_scelta anonymous: false customize: active: false folder: mosquitto certfile: fullchain.pem keyfile: privkey.pem require_certificate: false |
Ora potere riavviare.
Dal menù di Hassio andate su impostazioni/integrazioni/MQTT e premete configurazione.
Impostate l’IP del raspberry, la porta lasciate quella standard 1883, User e Password che avete impostato nell’addon in precedenza, infine mettete la spunta su abilita Discovery.
Riavviate nuovamente e Home Assistant sarà pronto a ricevere le nuove entity che la chiavetta ZigBee gli fornirà.
2. INSTALLAZIONE ADD-ON PER HASSIO
Collegate la chiavetta coordinator “A” ad una porta USB del raspberry mentre se avete ulteriori chiavette router “B” alimentatele e posizionatele non molto distante dal raspberry.
- Aggiungete all’add-on shop questa url:
https://github.com/danielwelch/hassio-zigbee2mqtt - Installate la versione stabile zigbee2mqtt
- Configurate come segue poi avviate l’addon premendo start
1 2 3 4 5 6 7 8 9 10 11 12 |
{ "data_path": "/share/zigbee2mqtt", "homeassistant": true, "permit_join": false, "mqtt_base_topic": "zigbee2mqtt", "mqtt_server": "mqtt://homeassistant", "serial_port": "/dev/ttyACM0", "devices": [], "network_key": [], "mqtt_user": "mqtt user", "mqtt_pass": "mqtt password" } |
user_mqtt sarà la username che state usando per mosquitto MQTT
password_mqtt sarà la username che state usando per mosquitto MQTT
Se in un secondo momento vorrete disabilitare il led verde che rimane sempre acceso nella chiavetta aggiungete alla fine nella configurazione sotto in linea con “mqtt…
"disable_led": true
ATTENZIONE: non fate copia incolla di tutta la configurazione ma solo delle parti che mancano potrebbe darvi errore.
Verificate i log che non diano errori.
Verificate che abbia creato il file configuration.yaml lo troverete in:
\\HASSIO\share\zigbee2mqtt\configuration.yaml
Dentro troverete questo:
1 2 3 4 5 6 7 8 |
devices: homeassistant: true mqtt: base_topic: zigbee2mqtt server: mqtt://homeassistant permit_join: false serial: port: /dev/ttyACM0 |
3. CREAZIONE PACKAGE PER IL PARING (accoppiamento)
Creare un file di nome pkg_chiavetta_zigbee.yaml o copiatevi quello presente in questo file pkg_chiavetta_zigbee_v1.4.zip e mettetelo nella cartella dei package, se non l’avete ancora configurata vedi l’articolo Package Configurazione.
Se dopo l’avvenuto accoppiamento tra l’addon e il dispositivo Zigbee non dovesse comparire in Home Assistant la nuova entità dovrete abilitare il discovery su MQTT, provate a de-commentare le prime tre righe del package qui sotto.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 |
mqtt: broker: core-mosquitto #homeassistant # This will have to be your mqtt broker discovery: true homeassistant: customize: script.update_mappa_zigbee: icon: mdi:graphql input_boolean: zigbee_permit_join: name: Allow devices to join initial: off icon: mdi:cellphone-wireless input_text: remove_sensor: name: "Sensore da Rimuovere" initial: "-" icon: mdi:textbox zigbee2mqtt_old_name: name: Zigbee2mqtt Old Name zigbee2mqtt_new_name: name: Zigbee2mqtt New Name zigbee2mqtt_remove: name: Zigbee2mqtt Remove zigbee2mqtt_update: name: Zigbee2mqtt Update input_select: zigbee2mqtt_log_level: name: Zigbee2mqtt Log Level options: - debug - info - warn - error initial: info icon: mdi:format-list-bulleted timer: zigbee_permit_join: name: Time remaining duration: 600 # Updated this to the number of seconds you wish sensor: - platform: mqtt name: Bridge state state_topic: "zigbee2mqtt/bridge/state" icon: mdi:router-wireless # Sensor for Showing the Zigbee2mqtt Version - platform: mqtt name: Zigbee2mqtt Version state_topic: "zigbee2mqtt/bridge/config" value_template: "{{ value_json.version }}" icon: mdi:zigbee # Sensor for Showing the Coordinator Version - platform: mqtt name: Coordinator Version state_topic: "zigbee2mqtt/bridge/config" value_template: "{{ value_json.coordinator }}" icon: mdi:chip switch: - platform: mqtt name: "Zigbee2mqtt Main join" state_topic: "zigbee2mqtt/bridge/config/permit_join" command_topic: "zigbee2mqtt/bridge/config/permit_join" payload_on: "true" payload_off: "false" automation: - id: zigbee_join_enabled alias: Zigbee Join Enabled trigger: platform: state entity_id: switch.zigbee2mqtt_main_join to: "on" action: service: timer.start entity_id: timer.zigbee_permit_join - id: zigbee_join_disabled alias: Zigbee Join Disabled trigger: - platform: event event_type: timer.finished event_data: entity_id: timer.zigbee_permit_join - platform: state entity_id: switch.zigbee2mqtt_main_join to: "off" action: - service: timer.cancel data: entity_id: timer.zigbee_permit_join - service: switch.turn_off entity_id: switch.zigbee2mqtt_main_join - id: disable_zigbee_join_timer alias: Disable Zigbee joining by timer initial_state: true trigger: - platform: event event_type: timer.finished event_data: entity_id: timer.zigbee_permit_join action: - service: mqtt.publish data: topic: zigbee2mqtt/bridge/config/permit_join payload: 'false' - service: input_boolean.turn_off data: entity_id: input_boolean.zigbee_permit_join - alias: "ZigBee restart" initial_state: true trigger: platform: homeassistant event: start action: - delay: '00:00:40' - service: hassio.addon_restart data: addon: "7ad98f9c_zigbee2mqtt" - alias: Zigbee2mqtt Log Level initial_state: "on" trigger: platform: state entity_id: input_select.zigbee2mqtt_log_level action: - service: mqtt.publish data: payload_template: "{{ states('input_select.zigbee2mqtt_log_level') }}" topic: zigbee2mqtt/bridge/config/log_level script: update_mappa_zigbee: alias: Aggiornamento Mappa Zigbee sequence: service: zigbee2mqtt_networkmap.update zigbee2mqtt_remove: alias: Zigbee2mqtt Remove sequence: service: mqtt.publish data_template: topic: zigbee2mqtt/bridge/config/remove payload_template: "{{ states.input_text.zigbee2mqtt_remove.state | string }}" zigbee2mqtt_rename: alias: Zigbee2mqtt Rename sequence: service: mqtt.publish data_template: topic: zigbee2mqtt/bridge/config/rename payload_template: >- { "old": "{{ states.input_text.zigbee2mqtt_old_name.state | string }}", "new": "{{ states.input_text.zigbee2mqtt_new_name.state | string }}" } zigbee2mqtt_update: alias: Zigbee2mqtt Update sequence: service: mqtt.publish data_template: topic: zigbee2mqtt/bridge/ota_update/update payload_template: "{{ states.input_text.zigbee2mqtt_update.state | string }}" |
Dopo che lo avrete salvato controllate la configurazione con il CONTROLLA LA CONFIGURAZIONE e riavviate HA.
Vi troverete questo nuovo gruppo nella Home
3.1 CONFIGURAZIONE LOVELACE
Questo è il codice per creare la card in Lovelace
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
entities: - entity: switch.zigbee2mqtt_main_join - entity: timer.zigbee_permit_join - entity: script.update_mappa_zigbee - type: divider - entity: sensor.bridge_state - entity: sensor.zigbee2mqtt_version - entity: sensor.coordinator_version - entity: input_select.zigbee2mqtt_log_level - type: divider - entity: input_text.zigbee2mqtt_old_name - entity: input_text.zigbee2mqtt_new_name - entity: script.zigbee2mqtt_rename - type: divider - entity: input_text.zigbee2mqtt_remove - entity: script.zigbee2mqtt_remove - type: divider - entity: input_text.zigbee2mqtt_update - entity: script.zigbee2mqtt_update show_header_toggle: false title: ZigBee type: entities |
4. CHIAVETTA ZIGBEE
Descrizione
Pulsante SW1: modifica lo stato virtuale del router (il router invia un rapporto diagnostico), luce led verde.
Breve pressione pulsante SW2: per inviare nuovamente una richiesta di accoppiamento ad un coordinator (consente di testare una connessione).
Lunga pressione pulsante SW2 (circa 5 secondi): per ripristinare il router e avviare un processo di collegamento.
Stato Luci
Luce verde: un breve lampeggiamento quando il router è collegato a una rete.
Luce rossa brevi lampeggi veloci (uno al secondo): il router si sta collegando a una rete.
Luce rossa lampeggi lunghi (un lampeggio breve ogni 4 secondi): operazioni normali.
Luce rossa tre brevi lampeggi: il router non può inviare un rapporto a un coordinator.
5. AVVIARE IL PARING
PARING CHIAVETTA ROUTER
Per accoppiare la chiavetta router (extender) a quella coordinator (inserita nel Raspberry), procedere come segue:
- Alimentare la chiavetta router, comincerà a lampeggiare il led rosso con un lampeggio ogni secondo circa.
- Dal pannello di Home Assistant premere lo switch Allow device to join, andate nell’addon zigbee2mqtt e leggete i log premendo di volta in volta il tasto refresh.
- Dopo qualche istante il processo di accoppiamento sarà effettuato il led rosso lampeggerà con una frequenza più bassa (circa ogni 5 sec). Per forzare l’accoppiamento premere il tastino SW1.
Ad accoppiamento avvenuto nel log comparirà una scritta come questa:
New device with address 0x00xxxxxxxxxxxxxx connected!
….’zigbee2mqtt/bridge/log’….
….’homeassistant/binary_sensor/0x00xxxxxxxxxxxxxx/router/config’…
Questa ultima riga con binary_sensor/…/router sta ad indicare che la chiavetta è stata accoppiata con successo.
PARING NUOVO DEVICE
Per associare un nuovo dispositivo alla chiavetta e quindi a HA dovrete, se in presenza di chiavette router, mettervi nella zona dove verrà posizionato il nuovo dispositivo, in questo modo si assocerà alla chiavetta router più vicina.
Premete lo switch Allow device to join, andate poi nell’addon zigbee2mqtt e leggete i log premendo di volta in volta il tasto refresh mentre procedete con l’accoppiamento.
Premete il tasto reset per 5 secondi questo emetterà 3 brevi lampeggi a questo punto rilasciare il tasto reset, attendere altri 2 o 3 lampeggi (circa 1/3 secondi) e premere e subito mollare il tasto reset, il dispositivo farà un breve lampeggio e poi rifare la breve pressione, ripetere questa ultima fase: pressione attesa lampeggio per una decina di volte. Nel frattempo premete il tasto refresh nell’add-on per controllare se il dispositivo si è accoppiato in caso contrario ripetere l’operazione.
Ogni marchio avrà una procedura leggermente diversa per l’accoppiamento.
Si rimanda comunque alla guida ufficiale per maggiori chiarimenti
https://github.com/Koenkk/zigbee2mqtt/wiki/Pairing-devices
Vedi Dispositivi supportati per verificare se il tuo dispositivo è supportato. Esiste una lista abbastanza ampia, inclusi dispositivi di rivenditori come Xiaomi, Ikea, Philips, OSRAM e altro.
Se non è elencato nei dispositivi supportati il dispositivo può essere aggiunto (abbastanza) facilmente vedi Come supportare i nuovi dispositivi.
SENSORI
(Questo sensore con l’ultimo aggiornamento di Home Assistant è già presente dopo l’accoppiamento del dispositivo)
Si possono ricavare alcuni sensori presenti negli attributi delle entità appena accoppiate, uno molto importante è il livello della batteria.
Se ad esempio abbiamo un tasto xiaomi con il seguente nome:
sensor.0x00158d00020079be_click
potremmo creare questo sensore.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
- platform: template sensors: battery_pulsante: friendly_name: 'Batteria Pulsante' unit_of_measurement: '%' value_template: > {{ state_attr('sensor.0x00158d00020079be_click', 'battery') }} icon_template: >- {% set level = state_attr('sensor.0x00158d00020079be_click', 'battery') | round(-1) | int %} {% if level in range(10, 81, 10) %} mdi:battery-{{ level }} {% elif level >= 90 %} mdi:battery {% else %} // otherwise mdi:battery-outline {% endif %} |
In aggiusta è stato introdotta l’icona della batteria che varia al variare del valore della batteria
Vi rimando alle altre guide sull’argomento:
https://hassiohelp.eu/2019/01/24/zigbee-network-map/
22 risposte
Da quel che ho letto ogni chiavetta CC2531 supporta fin a un massimo di 15 o 20 device zigbee… quindi se si hanno una trentina di dispositivi zigbee bisogna acquistare tre chiavette CC2531… una che fa da coordinator e due che fanno da router… sbaglio?
Sappi che tutti i dispositivi Zigbee alimentati a 220v fanno da router anch’essi quindi vanno ad aumentare i dispositivi supportati. Purtroppo non tutti i dispositivi di marche diverse sono compatibili tra di loro.
io ho una cam Xiaomi Aqara Smart 1080p e un lampadario Xiaomi Philips Ceilng che fanno da hub zigbee, però purtroppo nessuno dei due è nella lista di compatibilità di zigbee2mqtt
Ciao, ho due problemi; mio figlio ha tenuto premuto un tasto di un interruttore aqara, mandandolo in apprendimento (penso), il problema è che ora non funziona più e non riesco ad accoppiarlo. Ho notato che quando aziono lo switch per l’accoppiamento il tempo non parte. Ho provato anche con un interruttore nuovo ma nemmeno quello funziona. Suggerimenti.. Grazie
dove si trova la chiavetta?
Non riesco ad utilizzare lo script per il sensore con l’icona della batteria… dove va messo?
A me da sempre “None” come valore…
se però lo definisco così funziona, ma senza l’icona:
– platform: mqtt
name: ‘Batteria sensore finestra zigbee 1’
state_topic: “zigbee2mqtt/0x00158d0002bfb34c”
value_template: “{{ value_json.battery }}”
unit_of_measurement: “%”
come faccio ad integrare questo sensore con l’icona variabile su lovelace?
Con l’ultimo aggiornamento dell’addon si crea già un sensore con l’attributo battery e linkquality. Quindi dovresti già trovarli nelle tue Entity <>
Su Lovelace la card adesso va configurata cosi:
entities:
– entity: input_boolean.zigbee_permit_join
– entity: timer.zigbee_permit_join
– entity: sensor.bridge_state
show_header_toggle: true
title: ZigBee
type: entities
Si questa è per la versione grafica, quella nell’articolo per versione yaml
Salve sono fermo e non riesco in nessun modo a uscirmene
Non riesco a vedere il nuovo gruppo nella home
sembra che fino li sono riuscito a far girare tutto
ora sono fermo
chiedo aiuto
Salve!!
Grazie mille per la guida!! avrei bisogno di una mano.
non riesco a far funzionare queste entità… il resto vanno tutte
– entity: script.update_mappa_zigbee
– entity: input_text.remove_sensor
– entity: script.zigbee_remove
Hai qualche suggerimento?
Grazie mille
Stefano
Riscarica il package o fai copia incolla dal web. Non avevo aggiornato lo zip con le nuove modifiche
Grazie mille enrico per la rapida riprosta!! ho risolto.
Sono molto nuovo in Home Assistant, ti volevo chiedere un altra cosa, non riesco in nessun modo a far andare la mappa Zigbee… la vedo ma è tutta bianca…
Prova a seguire la guida sul sito ufficiale e discarica i file non vorrei che fosse cambiato qualcosa, mi sembra strano dato che a me funziona
Grazie mille alla fine ho risolto!! Era uno spazio vuoto prima della voce Zigbee2mqtt!!
Sono ormai 2 giorni che provo a integrare l’addon zigbe2mqtt su hassio
ma quando clicco istalla non scarica nulla
Qualcuno ha qualche notizia?
Hai notato che errori hai nella parte info? Subito dopo aver schiacciato installa vai su Hassio – System e leggi nei log che dice!! 😉
Non riesco a integrare i sensori come entità
Faccio il paring e lo vedo nel log dell’addon poi tra le entità non risulta nulla
Devi abilitare il discovery su mqtt in questo modo le entità in zigbee2mqtt verranno aggiunte in automatico in mqtt
Salve, complimenti per le guide che fate, ho un problema che non so se ho capito bene o meno. Ho acquistato una lampina Osram E27 smart+ Zigbee e si collega perfettamente con il zigbeemqtt tramite il cc2531, e fin qui ok.
Ora nel momento in cui spegno l’interruttore a muro, la lampadina e lo stato dentro HA non si aggiornano più, è normale questo funzionamento oppure no?
Se l’interruttore toglie l’alimentazione alla lampadina è abbastanza normale HA non sa lo stato della lampada e dovrebbe portarla a unavaliable ma zogbee2mqtt lavora in modo diverso.
Ciao, io ho questa chiavetta in un cassetto che non uso da tempo, ha senso metterla in funzione o al momento c’è di meglio e conviene cambiare?
Grazie