Como configurar o zigbee2mqtt em Hassio com um CC2531

O zigbee2mqtt suportado numa CC2531 permite criar uma rede ZigBee não proprietária. Isto tem duas vantagens:
1 - Possibilidade de ligar equipamentos de diferentes fabricantes a uma única rede ZigBee;
2 - Deixarmos de utilizar (ou poupar dinheiro para quem não tem) gateways que dependem ou comunicam com o exterior da nossa rede.

Embora exista aqui muita informação sobre o CC2531 e o zigbee2mqtt temos encontrado algumas dificuldades recorrentes entre alguns utilizadores pelo que surgiu a necessidade de criar este step-by-step.

1º Instalação e configuração do addon

Adicionam o seguinte repositório ao hassio:
https://github.com/danielwelch/hassio-zigbee2mqtt

De seguida instalam o addon
image

Depois de instalado devem adicionar alguns parâmetros à config do addon:

{
  "data_path": "/share/zigbee2mqtt",
  "homeassistant": true,
  "permit_join": false,
  "mqtt_base_topic": "zigbee2mqtt",
  "mqtt_server": "mqtt://IP-DO-MQTT:1883",
  "serial_port": "/dev/ttyACM0",
  "mqtt_user": "USER-MOSQUITTO",
  "mqtt_pass": "PASSWORD-MOSQUITTO",
  "log_level": "info"
  "devices": [],
  "network_key": []
}

Save-> Restart ao addon

2 - Adicionar painel de Join ao HA

Esta parte de cima já devem ter no configuration.yaml

mqtt:
    broker: localhost
    port: 1883
    client_id: hassio
    keepalive: 60
    username: !secret username_mqtt
    password: !secret password_mqtt
    protocol: 3.1.1
    discovery: true

Offtopic: o !secret é utilizado para retirar dos ficheiros de configuração dados sensiveis como passwords, ips, coordenadas, etc. Utilizando o ficheiro secrets.yaml podem tranquilamente partilhar as vossas configurações com terceiros que estes dados ficam protegidos (por não estarem lá). Podem ver aqui como utilizar.

No vosso configuration.yaml ou no package (aconselho vivamente que seja em package) para o zigbee2mqtt adicionam o seguinte:

input_boolean:
  zigbee_permit_join:
    name: Allow devices to join
    initial: off
    icon: mdi:cellphone-wireless

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

group:
  zigbee_group:
    name: Zigbee
    entities:
      - input_boolean.zigbee_permit_join
      - timer.zigbee_permit_join
      - sensor.bridge_state

automation:
  - id: enable_zigbee_join
    alias: Enable Zigbee joining
    hide_entity: true
    trigger:
      platform: state
      entity_id: input_boolean.zigbee_permit_join
      to: 'on'
    action:
    - service: mqtt.publish
      data:
        topic: zigbee2mqtt/bridge/config/permit_join
        payload: 'true'
    - service: timer.start
      data:
        entity_id: timer.zigbee_permit_join
  - id: disable_zigbee_join
    alias: Disable Zigbee joining
    trigger:
    - entity_id: input_boolean.zigbee_permit_join
      platform: state
      to: 'off'
    action:
    - data:
        payload: 'false'
        topic: zigbee2mqtt/bridge/config/permit_join
      service: mqtt.publish
    - data:
        entity_id: timer.zigbee_permit_join
      service: timer.cancel
    hide_entity: true
  - id: disable_zigbee_join_timer
    alias: Disable Zigbee joining by timer
    hide_entity: 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

Restart ao Hassio e vai-vos aparecer o seguinte:

Isto permite activar/desactivar o join por períodos de 10 minutos (o tempo é configurável no código acima) sem terem de reinicar o módulo e acima de tudo garante que não se esquecem do join activado.

3 - Emparelhar dispositivo

Em primeiro lugar activar o join no painel.

image

De seguida, o mais próximo possível do CC2531 devem iniciar o procedimento de join do dispositivo que querem adicionar. Não é possível explicar todos os devices, mas encontram facilmente os procedimentos no tio Google.

A título de exemplo, nos sensores da Xiaomi o processo de emparelhamento passa por carregar durante 5 segundos no botão (ou com agulha) e dependendo do modelo podem ter de passados esses 5 segundos ir carregando a cada 1 segundo (pe. sensor de porta) até aparecer no log.

Concluído o processo de emparelhamento, começam a ver os dispositivos no log do addon.

4 - Notas

a) Aconselho vivamente que usem o firmware CC2531ZNP-Pro-Secure_LinkKeyJoin.zip (212.0 KB)
para o CC2531. Só com esse é que consegui emparelhar as lâmpadas do IKEA por exemplo.
b) antes de começarem a comprar devices ZigBee consultem a lista de hardware suportado. Podem adicionar suporte a novos dispositivos, mas têm de saber se é um caminho que querem precorrer
c) as palavras a azul têm links que achei importantes e portanto fui colocando ao longo do texto.
d) para o CC2531 funcionar, tem de ser flashado com um firmware próprio utilizando o CC Debugger e o downloader cable. Se não quiserem comprar isto, vejam neste post uma lista de pessoas que têm e que não se importam de vos flashar o CC

Qualquer dúvida ou sugestão estejam à vontade.

Queria deixar o meu muito obrigado a:
@dgomes - Que nos deu a conhecer a CC2531 e apoiou a configuração do mesmo no já longo tópico da CC2531 que vos convido a ler
@Nuno Miguel do Movimento Maker - Pela paciência e tempo que perdeu a flashar o meu (e do @j_assuncao) primeiro CC2531 com recurso a arduino. Como não podia deixar de ser, o meu cc debugger chegou no dia em que ele conseguiu flashar os nossos CCs.

5 Curtiram

Para comentar este tópico, por favor utilizem o tópico abaixo:


Copyright © 2017-2021. Todos os direitos reservados
CPHA.pt - info@cpha.pt


FAQ | Termos de Serviço/Regras | Política de Privacidade