Scopi della guida:
Concetti affrontati:
|
Componenti software utilizzate:
Prerequisiti:
Dispositivi fisici utilizzati:
|
GUIDA INDICATA A UTENTI CON ISTALLAZIONE:![]() |
|
NOTE E DISCLAIMER
|
|
Revisione guida: 2.0 |
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. 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_command e remote.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 l’interfaccia dell’HUB 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
Una volta acquisiti i codici di un telecomando, un’altra funzione interessante è quella di rappresentare graficamente presso l’interfaccia dell’HUB il telecomando/i acquisito/i a mo’ di vero e proprio telecomando. Questo è oggetto della parte 2 della presente guida.
⚠️ Se di Home Assistant ne sai poco ma sei interessato a capirne di più, ti suggeriamo di partire da qui. |
Questa pagina è redatta, manutenuta e aggiornata dallo staff di inDomus, un gruppo di persone molto diverse tra loro che trovi, per domande e supporto, sul forum e sulla chat del sito. Se ti sei perso, a tua disposizione c'è la mappa. |