Gestire telecomandi virtuali su Home Assistant via Broadlink (parte 1)

5 minuti di lettura
Scopi della guida:
  • Definire dei veri e propri telecomandi virtuali su Home Assistant comandati da attuatori Broadlink
  • Livello di difficoltà: bassa
  • Categoria d’integrazione: Local Polling
Concetti affrontati:
  • Configurazione software
Componenti software utilizzate:

Prerequisiti:

Dispositivi fisici utilizzati:
  • Il computer sul quale è in esecuzione Home Assistant
  • Un attuatore Broadlink in grado di ricevere/inviare codici infrarossi/radiofrequenza
  • La fonte di codici infrarossi/radiofrequenza (tipicamente un tele o un radiocomando)
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: 2.0

 

remote telecomando

Abstract

Una delle funzioni più apprezzate nell’integrazione degli attuatori Broadlink con Home Assistant è quella di riuscire ad ottenere delle entità le quali rappresentino climatizzatori, media player (TV, Hi-fi ecc.) e ventilatori le quali, a loro volta, quando comandate dalla domotica scaturiscano nell’invio del corretto codice infrarosso/radiofrequenza verso l’elettrodomestico da controllare, ottenendo così la domotizzazione di elettrodomestici e impianti tradizionali.

A tale scopo, da molto tempo ormai si utilizza il collaudato (e versatile) custom component “SmartIR“. Lo scopo di questa guida è però un altro.

Ciò che però mancava, infatti – almeno fino all’uscita della versione 0.103 di Home Assistant – era la possibilità, tramite il componente “nativo” di Home Assistant “Broadlink“, di definire in domotica dei veri e propri “telecomandi”, specifiche entità che rappresentino virtualmente quelli fisici.telecomando Mentre la logica di funzionamento del telecomandi dei climatizzatori è piuttosto complessa (e così le rispettive entità di tipo “Climate” realizzate via SmartIR), in altre tipologie di telecomandi è molto più elementare (per esempio quelli TV), ma l’invio di singoli codici via frontend, via automazione o via script fino ad oggi prevedeva di utilizzare necessariamente il servizio “remote.send_command” associato al codice da inviare (che andava raccolto precedentemente e poi cablato in configurazione).

Il grande valore di questa novità sta nella possibilità di definire invece quanti telecomandi virtuali si voglia, assegnandogli un numero teoricamente infinito di tasti; successivamente all’apprendimento associato ai vari tasti, dei rispettivi codici ci si dimentica, così da rendere possibile la trasmissione utilizzando sempre il servizio “remote.send_command” ma indicando telecomando virtuale e tasto virtuale da “premere” virtualmente.

Non solo: componente “Broadlink” permette non solo l’invio di un codice assegnato al binomio telecomando/tasto, ma anche di ripetere ciclicamente l’invio per un certo numero di volte, distanziando un invio e l’altro da un tempo arbitrario. Questo è molto utile, per esempio, quando si vuole variare il volume di una TV: comunico d Home Assistant di inviare il comando Volume+ (o Volume-) un certo numero di volte, intervallando gli invii con un tempo arbitrario di – per esempio – un decimo di secondo. Infine, è anche prevista la gestione dei tasti alternativi, ovvero quelli che attuino più funzioni (per esempio un tasto on/off).

In questa prima parte di guida vedremo come definire un telecomando virtuale, come acquisirne i tasti e come, infine, evocare il servizio di invio. Nella seconda parte (in corso di redazione)vedremo anche come gestire l’entità “Remote” presso il frontend.

N.b. Questa guida fa riferimento, indifferentemente, a codici infrarossi e/o in radiofrequenza, chiamandoli semplicemente “codici”. Ovviamente la possibilità di inviare codici radiofrequenza tramite Broadlink prevede l’adozione di un’unità in grado di farlo (eg. Pro RM3) e che i codici in radiofrequenza acquisiti non siano provenienti da un telecomando rolling-code. In caso, l’unico modo di domotizzare uno di questi telecomandi è questo, in quanto tali tipologie di telecomandi utilizzano codici variabili i quali, appunto, variano ad ogni trasmissione.

In caso si pensi di domotizzare i comandi di una TV, verificare prima che essa non sia inclusa tra le piattaforme figlie del componente “Media Player”, cosa che consentirebbe l’integrazione diretta.

Si parte

Integrazione

Per utilizzare la funzionalità telecomando del componente “Broadlink” è necessario attivare i servizi remote.learn_command e remote.send_command, il primo per acquisire codici, il secondo per inviarne. Per farlo è sufficiente provvedere a integrare l’attuatore o gli attuatori Broadlink nella nuova modalità guidata come spiegato in questa guida.

Al termine dell’integrazione, su Home Assistant appariranno i servizi sopra elencati (remote.send_commandremote.learn_command) nonché tante entità quanti sono i Broadlink integrati, tutte nominate remote.NOME_DEL_BROADLINK. Queste ultime entità verranno utilizzate in abbinamento ai sopracitati servizi per inviare e ricevere codici.

Definire telecomandi e acquisirne i codici

Per acquisire i codici relativi ai tasti dei nostri telecomandi è necessario definire un telecomando virtuale associato all’unità “Remote” appena creata. La definizione di un telecomando virtuale è data da un nome distintivo: per farlo è sufficiente evocare il servizio remote.learn_command indicando il nome del tasto e del telecomando virtuale: se quest’ultimo non esiste presso l’HUB, esso viene “creato” e gli viene associato il primo tasto indicato; se invece già esiste, semplicemente il tasto indicato viene aggiunto/sostituito alla lista dei tasti sin lì acquisiti.

L’evocazione del servizio può essenzialmente essere eseguita in due modalità: tramite interfaccia servizi Lovelace UI e tramite script.

TRAMITE INTERFACCIA SERVIZI

Si tratta del metodo più pratico. È infatti sufficiente recarsi presso la voce di menu “Strumenti per gli sviluppatori” > “Servizi“, selezionare il servizio “remote.learn_command” e inserire la configurazione (in notazione YAML), come da esempio che segue:

entity_id: remote.NOME_DEL_BROADLINK
device: TV
command: on_off
alternative: true
timeout: 30

e poi, ovviamente, cliccare su “Chiama servizio“. A questo punto il Broadlink attenderà la ricezione del codice, e tutto ciò che bisognerà fare sarà semplicemente premere il tasto corrispondente sul telecomando.

Spiegazione dei campi:

entity_id (Stringa, obbligatoria) Il nome dell’entità “Remote” da utilizzare
device (Stringa, obbligatoria) Il nome del telecomando virtuale
command (Stringa, obbligatoria) Il nome del tasto da acquisire
alternative (Booleano, opzionale) Impostare a “true” quando si tratta di un tasto multifunzione (eg. on/off). Default: false
timeout (Intero, opzionale) Numero di secondi entro i quali inviare il codice da apprendere. Default: 30
TRAMITE SCRIPT

Lo stesso obiettivo si può ottenere tramite uno script, modellato come da esempio che segue:

script:
  learn_on_off_tv:
    sequence:
      - service: remote.learn_command
        data:
          entity_id: remote.NOME_DEL_BROADLINK
          device: TV
          command: on_off
          alternative: true

Funziona, anche se non è comodissimo (dopo averlo creato, lo script va caricato sull’HUB e poi evocato).


Ma dove vanno a finire, questi comandi?
Si tratta di un tema importante, perché l’elenco di queste informazioni deve poter essere salvato per evitare che, a fronte di un ripristino dell’HUB, si debbano riacquisire tutti i codici da capo.

I codici vengono man mano salvati dentro la cartella nascosta “/.storage/” presente nella cartella di configurazione dell’HUB. Ogni Broadlink aggiunto in configurazione crea un corrispondente file nella cartella indicata, dal nome definito dalla seguente nomenclatura:

broadlink_remote_MAC_ADDRESS_codes

Dove, ovviamente, la parte MAC_ADDRESS è relativa all’indirizzo fisico del Broadlink (MAC address).
Ogni file contiene, in notazione JSON, codici appresi – per esempio:

{
    "data": {
        "TV": {
            "on_off": [
                "JgBwAE0VJxUSFScVEhUmFhIVExUmFRIWExQTFRIAA1NOFSYVExUmFRMVJhUSFhIVJhUTFRIWEhUSAANRThUlFRMVJhUTFSYVExUSFScVEhUTFRIVEwADUE4VJhYSFSYVExUmFRMVEhUnFRIVExUSFRMADQUAAAAAAAAAAA==",
                "JgBUAE8UJxQUFCYVFBQmFRMVExQnFRMUExUTFBMAA1JPFCcUExUnFBIWJxQTFBQUJxQUFBMUFBQTAANQTxQnFBQUJxQTFScUExQUFCYVFBQTFBMVEwANBQAAAAA="
            ]
        }
    },
    "key": "broadlink_remote_XXXXXXXXX_codes",
    "version": 1
}

Sarà pertanto sufficiente salvare tali file per assicurarsi un backup del codici acquisiti.

Invio dei codici

Anche l’invio dei codici può essere effettuato sia tramite interfaccia servizi sia tramite script/automazione, ma in questo caso è la seconda opzione ad essere la più pratica. Il servizio utilizzato è “remote.send_command“.

VIA SCRIPT/AUTOMAZIONE

Sia per gli script che per le automazioni è possibile utilizzare un blocco “service” analogo al seguente:

- service: remote.send_command
  data:
    entity_id: remote.NOME_DEL_BROADLINK
    device: TV
    command: on_off

Spiegazione dei campi:

entity_id (Stringa, obbligatoria) Il nome dell’entità “Remote” da utilizzare
device (Stringa, obbligatoria) Il nome del telecomando virtuale
command (Stringa, obbligatoria) Il nome del tasto da acquisire
num_repeats (Intero, opzionale) Quante volte eventualmente ripetere l’invio del codice. Default: 0
delay_secs (Decimale, opzionale) Numero di secondi di intervallo tra un re-invio e l’altro
hold_press (Decimale, opzionale) Numero di secondi di attesa prima dell’invio del codice
VIA INTERFACCIA SERVIZI

È sufficiente recarsi presso la voce di menu “Strumenti per gli sviluppatori” > “Servizi“, selezionare il servizio “remote.send_command” e inserire la configurazione (in notazione YAML), come da esempio che segue:

entity_id: remote.NOME_DEL_BROADLINK
device: TV
command: volume
num_repeats: 2
delay_secs: 0.75
hold_secs: 2.5

Interfaccia Lovelace UI

Una volta acquisiti i codici di un telecomando, un’altra funzione interessante è quella di rappresentare graficamente presso l’interfaccia Lovelace UI il telecomando/i acquisito/i  a mo’ di vero e proprio telecomando. Questo è oggetto della parte 2 della presente guida.


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