Oggi vedremo come creare un gateway Zigbee con Raspberry Pi 3 B+, Hassio e una chiavetta USB sniffer Zigbee CC3531 con il progetto Zigbee2Mqtt su github e per più info ecco il LINK

Con questa chiavetta possiamo usare molti prodotti di diverse marche, tra qui i principali xiaomi, ikea e philips hue, li vedremo come se fosse ro collegati a Home Assistant con il loro gateway originale e li potremmo comandare solo tramite Home Assistant.

Come prima cosa vi consiglio cosa dovrete comprare:

Raspberry Pi 3 B+:  https://amzn.to/2RpMv0b
Chiavetta CC2531:  http://s.click.aliexpress.com/e/cmiYjDg8
Debugger:  http://s.click.aliexpress.com/e/beugnKEy
Cavo Downloader:  http://s.click.aliexpress.com/e/cpzhc5I0

Software da usare:

Hass.io: https://www.home-assistant.io/hassio/installation/
Driver debugger: http://www.ti.com/general/docs/lit/getliterature.tsp?baseLiteratureNumber=swrc212&fileType=zip
Programma per flashare: SmartRF Flash programmer (NOT V2)
firmware chiavetta CC2531: CC2531ZNP-Prod.hex
Add-on per Hassio: https://github.com/danielwelch/hassio-zigbee2mqtt

Per installare Hass.io vi consiglio di guardare le mie vecchie guide ancora valide https://www.itchsblog.it/home-assistant-recap/

Serve avere attivo il discovery per mqtt tramite impostazioni —> integrazioni e l’addon mqtt che va installato come nella mia guida:https://www.itchsblog.it/2018/02/19/guida-parte-3-esperienza-fai-domotica-esempi-aggiunta-prodotti-smart-attivazione-mqtt-home-assistant/

Una premessa questa procedura di flash io la spiego con Windows 10/7 e se dovete flashare potete vedere la guida ufficiale su github.

Come prima cosa colleghiamo la chiavetta per flasharla al debugger con il cavo downloader e poi sia la chiavetta che il debugger al computer (come da foto presa nella guida ufficiale).

Installiamo i driver del debugger o tramite il software che c’è dentro o se non riconosce i drver nella gestione dei dispositivi di windows andiamo tasto destro sul debugger e aggiorna manualmente i driver dandogli la cartella di destinazione dei driver.

Poi apriamo il programma per il flash e configuriamolo (come in foto presa dalla guida ufficiale), flash image selezionate il file del firmware(.hex), nella tabella selezioniamo il debugger, il resto lascialo così e premi perform actions e all fine dovrebbe uscire come in foto

Stacchiamo la chiavetta e debugger dal pc e colleghiamo solo la chiavetta al raspberry anche da acceso, andiamo nella shell di Hass.io che dovrete aver installato con l’addon e date il comando “hassio hw info” e tra i serial troverete /dev/ttyACM0.

A questo punto bisogna installare e configurare l’addon di Zigbee2Mqtt(come in foto), per installare l’addon andare nella sezione hass.io, poi inserire il link  in add-on store, cercare l’addon premere, installare e dirgli di avviarsi all’avvio e auto update.

Quindi  adesso inseriamo la configurazione per attivare da interfaccia il pairing in un packages o nel configuration.yaml

group:

  zigbee_group:

    name: Zigbee2mqtt

    entities:

      - input_boolean.zigbee_permit_join

      - timer.zigbee_permit_join

      - sensor.zigbee2mqtt_bridge_state

      - switch.zigbee2mqtt_main_join

      - automation.enable_zigbee_joining

      - automation.disable_zigbee_joining

      - automation.disable_zigbee_joining_by_timer

      - input_select.zigbee2mqtt_log_level

      - automation.zigbee2mqtt_log_level

# Input select for Zigbee2mqtt debug level

input_select:

  zigbee2mqtt_log_level:

    name: Zigbee2mqtt Log Level

    options:

     - debug

     - info

     - warn

     - error

    initial: info

    icon: mdi:format-list-bulleted

# Input boolean for enabling/disabling joining

input_boolean:

  zigbee_permit_join:

    name: Allow devices to join

    initial: off

    icon: mdi:cellphone-wireless

# Timer for joining time remaining (120 sec = 2 min)

timer:

  zigbee_permit_join:

    name: Time remaining

    duration: 120

# Sensor for monitoring the bridge state

sensor:

  - platform: mqtt

    name: Zigbee2mqtt Bridge state

    state_topic: "zigbee2mqtt/bridge/state"

    icon: mdi:router-wireless

# Switch for enabling joining

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"

# Automations

automation:

  - alias: Zigbee2mqtt Log Level

    initial_state: 'on'

    trigger:

      - platform: state

        entity_id: input_select.zigbee2mqtt_log_level

        to: debug

      - platform: state

        entity_id: input_select.zigbee2mqtt_log_level

        to: warn

      - platform: state

        entity_id: input_select.zigbee2mqtt_log_level

        to: error

      - platform: state

        entity_id: input_select.zigbee2mqtt_log_level

        to: info

    action:

      - service: mqtt.publish

        data:

          payload_template: '{{ states(''input_select.zigbee2mqtt_log_level'') }}'

          topic: zigbee2mqtt/bridge/config/log_level

  - 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

    hide_entity: true

    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

  - 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

Per fare il paring bisogna attivare l’automazione e premere il pulsante di paring sul dispositivo da accoppiare così avendo attivo il discovery mqtt rileva in automatico il dispositivo e lo configura in automatico.

in questa pagina troverete tutti i dispositivi compatibili LINK

Per avere aiuto io e altri abbiamo creato un canale Discord e un gruppo telegram dove potete collegarvi e ci aiutiamo a vicenda https://discord.gg/CTCrSm5 https://t.me/HomeAssistant_Rpi

Se volete Donare per avere più progetti: paypal.me/itchsblog

Ti è piaciuto? Prenditi un secondo per supportare Itech's Blog su Patreon!