Integrare componenti a radiofrequenza con Home Assistant via Sonoff RF Bridge

10 minuti di lettura
SCOPI DELLA GUIDA:
  • Relazionare un BRIDGE/Gateway Radiofrequenza↔︎TCP/IP ITEAD Sonoff RF Bridge (riprogrammato Tasmota) a Home Assistant tramite MQTT. Questo consente di integrare all’HUB componenti basati su radiofrequenza 433 MHz di diversi produttori e tipologie.
  • Livello di difficoltà: medio
  • Categoria d’integrazione: Local Push
CONCETTI AFFRONTATI:
  • Utilizzo e configurazione software
COMPONENTI SOFTWARE UTILIZZATE:
  • Home Assistant
  • Componente Home Assistant “MQTT
  • Varie piattaforme e servizi Home Assistant figli del componente “MQTT”
PREREQUISITI:
DISPOSITIVI FISICI UTILIZZATI:
GUIDA maggiormente indicatA per:

Tutti gli ambienti

Note e disclaimer
  • qualsiasi eventuale modifica agli impianti domestici dev'essere progettata ed realizzata SOLO da personale qualificato;
  • qualsiasi modifica attuata in proprio è a propria responsabilità personale nonché a proprio rischio e pericolo (i contenuti della presenta pagina hanno puro scopo didattico);
  • qualsiasi modifica attuata in proprio a un dispositivo ne fa decadere garanzia, omologazioni e certificazioni di qualità.
Revisione guida: 1.2

Abstract

Un BRIDGE/Gateway è in sostanza un dispositivo che funge (come il nome facilmente suggerisce) da “ponte” tra una tecnologia trasmissiva e un’altra. Nel caso dell’ITEAD Sonoff RF Bridge parliamo di un componente in grado di mettere in comunicazione il protocollo TCP/IP (via Wi-Fi) e la comune radiofrequenza a 433 MHz; quest’ultima è una tecnologia ampiamente in uso, per esempio, in molti telecomandi “da cancello”, ma spesso anche in sensori, attuatori ed altro.

Sonoff RF Bridge
Sonoff RF Bridge.

ITEAD Sonoff RF Bridge è un dispositivo tanto semplice quanto utile. È infatti in grado di ricevere segnali (per esempio da sensori) oppure di inviarne (verso un cancello o altri ricevitori); tali segnali, ovviamente, sono composti dalla portante a 433 MHz e da un payload, un “carico utile” rappresentato da un codice il quale può essere espresso in formato esadecimale o decimale. Va da sé che tale dispositivo sia particolarmente utile per domotizzare determinate funzioni della propria domotica personale: rendere domotica l’apertura di un cancello, trasformare in un’azione la ricezione di un codice da parte di un sensore eccetera.

La presente guida illustra come integrare le funzioni di ricezione e di invio presso una domotica personale basata su Home Assistant sfruttando il comodo ed efficace protocollo MQTT, il quale utilizza il protocollo TCP/IP come veicolo il quale, a sua volta, è trasmesso tramite Wi-Fi.

Per portare un esempio pratico, ipotizziamo di voler inviare tramite Sonoff RF Bridge un codice radiofrequenza che apra un cancello tramite la domotica Home Assistant: configureremo facilmente uno script il quale provveda (quando evocato) a pubblicare uno specifico topic di comando MQTT il quale, via TCP/IP, viene inviato al broker MQTT; dato che il Sonoff RF Bridge sarà in ascolto (via Wi-Fi) su quel topic e su quel broker, alla ricezione provvederà a inviare il codice scelto.

Questa guida illustrerà tutto questo.

IMPORTANTE: in presenza qualsiasi telecomando di tipo rolling-code (per esempio quelli di alcuni impianti d’allarme o di cancelli automatici) da cui acquisire codici, questa guida non è appropriata. L’unica strada per domotizzare questo tipo di telecomandi è questa.

Si parte

Assunti

Al fine di implementare le tecniche descritte in questa guida si assume che:

In merito all’ultimo punto, si precisa che l’adozione del firmware Tasmota è necessaria al fine di dotare il dispositivo del protocollo MQTT al fine di ottenere questa integrazione di tipo Local Push. Di fabbrica, infatti, Sonoff RF Bridge non è dotato di tale funzionalità: per riprogrammare il dispositivo si consiglia di sfruttare la nostra Masterguide.

N.b. L’adozione del firmware Tasmota consente al Sonoff RF Bridge l’invio e la ricezione di diversi codici radiofrequenza; in caso la necessità sia quella di inviare e ricevere codici “grezzi” (RAW) è allora necessario modificare il mini-firmware della sola componente radio del dispositivo tramite la versione specifica di mini-firmware realizzata da Portish, la quale consente l’uso nelle modalità descritte. La guida per installare tale mini-firmware è disponibile qui.

Configurazione Tasmota

Dopo aver provveduto alla riprogrammazione del Sonoff RF Bridge con Tasmota è necessario configurarlo in modo appropriato, a meno che non si sia già provveduto da sé.

N.b. Tutti i dettagli legati alle funzionalità Tasmota disponibili per Sonoff RF Bridge sono disponibili qui.

Modulo

Per far ciò è necessario recarsi via web alla voce di menu del firmware “Configuration” > “Configure Module” e selezionare la tipologia di modulo “Sonoff Bridge”:

Sonoff-Tasmota - Sonoff RF Bridge

Una volta salvata la configurazione e riavviatosi automaticamente il componente la schermata principale web del firmware cambierà come segue:

Sonoff-Tasmota - Sonoff RF Bridge - Main

L’apparire dei 16 tasti relativi all’invio di altrettanti codici (per il massimale previsto su Tasmota – vedi sopra) confermerà l’avvenuta, corretta configurazione.

MQTT

Non solo è necessario configurare il modulo, ma anche le funzioni MQTT (se non si sa di cosa si parla leggere prima questa guida).
Per farlo è necessario collegarsi via web alla voce di menu del firmware “Configuration” > “Configure MQTT” e impostare quindi i seguenti campi:

  • alla voce “Host“, inserire l’IP del broker MQTT;
  • alla voce “Port“, inserire la porta del broker MQTT (solitamente la 1883);
  • alla voce “Client“, inserire il nome che desiderate assegnare al Sonoff in ambito MQTT (in questo caso, “BridgeRF”);
  • alla voce “Topic“, inserire il nome che desiderate assegnare al Sonoff in ambito MQTT (in questo caso, “BridgeRF”);
  • alla voce “User“, inserire l’eventuale username per accedere al broker;
  • alla voce “Password“, inserire l’eventuale username per accedere al broker.

Lasciare invariati gli altri campi.
Cliccare infine su “Save“.

Home Assistant

A questo punto possiamo passare alla configurazione Home Assistant.
Come detto, diamo già per scontato che le funzionalità client MQTT di Home Assistant siano già state configurate, quindi va da sé che l’HUB sia già in grado di ricevere topic telemetrici MQTT e inviare topic di comando MQTT.

Ricezione

Come esempio in questa guida utilizzeremo un sensore di apertura varchi proprio della ITEAD, il Sonoff DW1. Si tratta di un semplicissimo sensore magnetico reed che, quando il varco viene aperto, invia in codice specifico tramite radiofrequenza 433 MHz.

Quando riceve uno di questi segnali, Sonoff RF Bridge (quando dotato di firmware Tasmota) provvede alla pubblicazione di un topic telemetrico MQTT contenente nel payload (carico utile) il codice ricevuto, il che equivale alla “firma” del sensore che l’ha inviato.

Solitamente il topic telemetrico è:

tele/BridgeRF/RESULT

dove ovviamente “BridgeRF” è il nome MQTT assegnato configurando MQTT sul firmware.
Il payload sarà grossomodo il seguente:

{“RfReceived”:{“Sync”:12610,”Low”:400,”High”:1250,”Data”:”F413AC”,”RfKey”:”None”}}


Per scoprire il codice del componente da integrare sarà quindi sufficiente recarsi via web presso la “Console” di Tasmota e attivare il componente (nel caso del sensore magnetico, aprirlo simulando un’apertura varco): se il Sonoff RF Bridge riceverà il segnale, apparirà una stringa analoga a questa:

MQT: tele/BridgeRF/RESULT = {"RfReceived":{"Sync":12610,"Low":400,"High":1250,"Data":"F413AC","RfKey":"None"}}

Nella chiave “Data” troveremo il codice, in questo caso “F413AC“.

N.b. Certamente le informazioni contenute nella telemetria potrebbero essere altre (per esempio, la temperatura inviata da un sensore termico), quindi la configurazione che proponiamo a seguire è solo una delle possibili implementazioni (le quali ovviamente non possono essere elencate tutte). La guida ha come sempre scopo istruttivo, chiaramente va adattata alle proprie esigenze.

Ciò che faremo è quindi creare un’entità di tipo “Binary Sensor” la quale sia in grado di attivarsi quando, ricevendo il topic telemetrico “tele/BridgeRF/RESULT“, il dato contenuto sia “F413AC“.

Per farlo, aggiungeremo in configurazione qualcosa di questo tipo:

binary_sensor:
  platform: mqtt
  name: "sensore"
  off_delay: 5
  payload_on: "F413AC"
  payload_off: ""
  device_class: opening
  state_topic: "tele/BridgeRF/RESULT"
  value_template: "{{ value_json.RfReceived.Data }}"

Dopo aver salvato e riavviato l’HUB, apparirà un’entità chiamata binary_sensor.sensore la quale si attiverà quando il sensore, aprendolo, invierà il codice radiofrequenza che verrà raccolto da Sonoff RF Bridge e convertito nella telemetria attesa. Questa configurazione funziona, ma non ci siamo ancora del tutto.

RESET DELLO STATO DEL SENSORE

Dato che il sensore Sonoff DW1 (come altri) non è in grado di inviare un altro codice per segnalare l’avvenuta chiusura del varco, il sensore binary_sensor.sensore con la sola configurazione di cui sopra rimarrebbe sempre in stato “on” (ovvero “aperto”).

È quindi necessario indicare alla configurazione di Home Assistant cosa fare a fronte del rilevamento dell’apertura del varco.

Utilizzeremo quindi un’automazione che, a fronte del cambio di stato del sensore a “on” – aperto – provveda dopo tre secondi (un tempo arbitrario) a inviare un topic telemetrico MQTT “fake” (uguale a quello inviato dal Sonoff RF Bridge) il quale contenga una chiave di reset, in questo caso “key_clean“:

automation:
  alias: Apertura CONTATTO e reset
  trigger:
    platform: state
    entity_id: binary_sensor.sensore
    to: 'on'
    for:
      seconds: 5
  condition: []
  action:
    service: mqtt.publish
    data:
      topic: tele/BridgeRF/RESULT
      payload: '{"RfReceived":{"Data":"key_clean"}}'
      retain: false

A questo punto, per completare l’opera andrà modificato il sensore precedentemente configurato:

  • modificando il campo “payload_off” la chiave “key_reset“;
  • modificando il “payload_off” con un valore generico “on“;
  • inserendo nel campo “value_template” una specifica logica di valutazione dello stato.

Vediamo la configurazione rivista e definitiva:

binary_sensor:
  platform: mqtt
  name: "sensore"  
  payload_on: "on"
  payload_off: "off"
  device_class: opening
  state_topic: "tele/BridgeRF/RESULT"
  value_template: >
    {% if value_json['RfReceived'].Data == 'F413AC' %}
      on
    {% elif value_json['RfReceived'].Data == 'key_clean' %}
      off
    {% else %}
      {{ states('binary_sensor.sensore') }}
    {% endif %} 

In caso invece il sensore sia di altro tipo e abbia la possibilità di fornire un diverso codice per comunicare l’avvenuta chiusura del varco, l’automazione di cui sopra non è necessaria, ma piuttosto è necessario correggere la configurazione e indicare nei campi “payload_on” e “payload_off” i valori corretti.

Configurazione con più sensori

In caso siano presenti più sensori, la procedura prevede la creazione di tanti binary_sensor quanti siano i sensori e relativi codici; ovviamente, ogni entità andrà personalizzata col proprio codice “firma”. Vedremo infatti a seguire come configurare una sola automazione che si inneschi a fronte dell’apertura anche di un solo sensore e che resetti lo stato di chiusura condiviso da tutti tramite la pubblicazione della chiave “key_reset“.

Per far ciò è necessario innanzitutto creare un gruppo che contenga tutti i binary_sensor; ipotizzeremo nell’esempio che segue la presenza in domotica di tre sensori:

group:
    sensori:
    name: Contatti magnetici
    entities:
      - binary_sensor.sensore
      - binary_sensor.sensore_2
      - binary_sensor.sensore_3

Avremo così definito un gruppo “group.sensori“.
Modificheremo ora l’automazione precedentemente definita affinché si attivi all’apertura di un qualsiasi sensore: dato che l’apertura anche di un singolo sensore causerà il cambio di stato del gruppo in “on” (essendo composto di elementi omogenei), utilizzeremo proprio questo stato di gruppo per innescare l’automazione:

automation:
  alias: Apertura CONTATTI e reset
  trigger:
    platform: state
    entity_id: group.sensori
    to: 'on'
    for:
      seconds: 5
  condition: []
  action:
    service: mqtt.publish
    data:
      topic: tele/BridgeRF/RESULT
      payload: '{"RfReceived":{"Data":"key_clean"}}'
      retain: false

Come azione pubblicheremo via MQTT il messaggio “key_clean“, il quale riporterà in stato di “off tutti i sensori (nonché l’entità gruppo stessa).

Invio

Il firmware Tasmota prevede, di base, l’invio di 16 codici (pre-acquisiti) tramite topic di comando MQTT o tramite interfaccia web (i 16 tasti che abbiamo visto in precedenza). Ciò che faremo è in primis acquisire  e associare manualmente uno o più codici (verificando che tutto funzioni) per poi cablare una semplicissima configurazione Home Assistant al fine di evocarne l’invio.

In questo esempio prenderemo in considerazione l’acquisizione di un codice telecomando che apra un cancello da un telecomando (non rolling code – quelli si domotizzano così e non con Sonoff RF Bridge)

ACQUISIZIONE

Acquisire un codice è semplicissimo. Collegandosi via web presso la “Console” di Tasmota, eseguire il seguente topic di comando:

cmnd/BridgeRF/RfKeyX 2

dove ovviamente “BridgeRF” è il nome MQTT assegnato configurando MQTT sul firmware e dove X è il numero di codice da acquisire. Una volta eseguito il Sonoff RF Bridge si metterà in ascolto emettendo un bip e pubblicando in console il seguente messaggio:

stat/BridgeRF/RESULT = {“RfKeyX“:”Start learning”}

A questo punto entro i 60 secondi successivi inviare il codice da acquisire (può essere un telecomando – non rolling code! – o qualsiasi altra fonte codificata in questo modo): a fronte di un’acquisizione positiva, il Sonoff emetterà un nuovo bip e pubblicherà in console il seguente messaggio:

stat/BridgeRF/RESULT = {“RfKeyX“:”Learned”}

Diversamente, pubblicherà un messaggio di fallimento:

stat/BridgeRF/RESULT = {“RfKeyX“:”Learn failed”}


Dando per scontato di riuscire ad acquisire il codice d’interesse, è il momento di testare l’effettiva bontà di tale acquisizione. Per farlo è sufficiente utilizzare il topic di comando:

cmnd/BridgeRF/RfKeyX 6

dove ovviamente “BridgeRF” è il nome MQTT assegnato configurando MQTT sul firmware e dove X è il numero di codice da inviare. Se l’esecuzione andrà a buon fine (ovvero la funzione corrispondente all’invio del codice – per esempio l’apertura di un cancello), saremo pronti per configurare Home Assistant.

INVIO

A questo punto definiremo un banalissimo script su Home Assistant (ma è solo un esempio per mostrare l’uso del servizio):

script:
  apertura_cancello:
    sequence:
      - service: mqtt.publish
        data:
          topic: cmnd/BridgeRF/RfKeyX 6

Questa configurazione genererà una entità chiamata script.apertura_cancello la quale, quando evocata tramite il servizio script.turn_on (per esempio in un’automazione di rientro a casa) provvederà a pubblicare sul broker MQTT il topic “cmnd/BridgeRF/RfKeyX 6“, facendo così in modo che il Sonoff RF Bridge provveda all’invio del codice, e quindi ad aprire il cancello.

INVIO MANUALE

Non volendo invece usare uno dei 16 codici pre-acquisiti, è possibile (ovviamente conoscendo il codice), utilizzare direttaemnte il comando:

cmnd/BridgeRF/RfCode

al quale associare, nel payload, il codice da inviare.
Per esempio, un interruttore che invii (nelle due posizioni “ON” e “OFF“) due diversi codici potrebbe essere implementata così:

switch:
  platform: mqtt
  name: "Interruttore tadio"
  command_topic: "cmnd/bridge/rfcode"
  payload_on: "#93A7D8"
  payload_off: "#93A7D4"
  qos: 1
  retain: false

Dove i due codici (“#93A7D8” e “#93A7D4“, solo esemplificativi) rappresentano quelli da inviare quando impostato l’interruttore a “ON” o a “OFF“.

Invio di codici grezzi (RAW)

La tecnica d’invio codici descritta è sicuramente la più semplice ed efficace. Qualora però si vogliano inviare codici RAW (nel caso, per esempio, di telecomandi particolari che inviino, alla pressione dei tasti, diverse serie di codici) è possibile farlo, ma solo tramite l’adozione di una versione rivista del min-firmware dedicato alla sola componente radio del dispositivo; il comando:

cmnd/BridgeRF/RfRaw

è precisamente concepito a questo scopo, ma è per l’appunto disponibile solo con la versione alternativa di Tasmota sopracitata. Un focus dedicato a questa tecnica alternativa è disponibile sul sito ufficiale Tasmota.

N.b. In caso il tema radiofrequenza interessi solo dal punto di vista di invio codici, al posto del Sonoff RF Bridge si consiglia alternativamente l’uso dell’attuatore Broadlink RM Pro+.


Home Assistant Official Logo ATTENZIONE: ricorda che sul nostro community FORUM c'è una sezione ad hoc dedica a Home Assistant, per qualsiasi dubbio, domanda, informazione nel merito specifico di queste componenti.


Telegram News Channel