Catturare e inviare codici infrarossi/radiofrequenza tramite Broadlink e Home Assistant

6 minuti di lettura
Scopi della guida
  • Acquisire codici infrarossi/radiofrequenza in codifica Base64 tramite Home Assistant e un attuatore Broadlink
  • Livello di difficoltà: basso
Concetti affrontati:
  • Utilizzo software
Componenti software utilizzate:
Prerequisiti
Dispositivi fisici utilizzati:
  • Il dispositivo sul quale risiede Home Assistant
  • La fonte di codici infrarossi/radiofrequenza (tipicamente un tele o un radiocomando)
  • Un attuatore Broadlink per invio/ricezione infrarossi (eg. RM Mini 3) o invio ricezione infrarossi/radiofrequenza (eg. Broadlink RM Pro/Pro+)
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.1

Abstract

TelecomandoL’utilizzo in domotica di codici infrarossi e/o in radiofrequenza (433mhz / 315mhz) rappresenta spesso una buona tecnica per riuscire a domotizzare qualcosa che, nativamente, non lo sarebbe.

Da tempo infatti esistono semplici ed economici attuatori utili all’apprendimento e alla trasmissione di codici che, una volta inseriti in domotica, rappresentano una “leva” per integrare indirettamente dei dispositivi “obiettivo”.

In sostanza, la tecnica è quella di apprendere i codici dai telecomandi dei dispositivi che vogliamo domotizzare, inserirli nella configurazione del nostro HUB personale (in questo caso, Home Assistant) sotto forma di accessori (interruttori, ventilatori, condizionatori ecc.) che, quando attivati, scaturiscano nell’invio dei codici infrarossi/radiofrequenza appropriati.

Questa tecnica è stata usata in svariati progetti presenti su inDomus, tra i quali:

Quello che vedremo in questa guida è come, partendo da un dispositivo Broadlink (capace nella ricezione/invio di codici infrarossi/radiofrequenza) e da un telecomando o un radiocomando (capaci rispettivamente nella trasmissione codici infrarossi o in radiofrequenza), riusciremo a catturare tali codici al fine di un riutilizzo in configurazione domotica.

Questa guida fa riferimento a codici radiofrequenza 433mhz/315mhz (non rolling code) e a segnali infrarossi (con lunghezza d’onda tra i 700 nm e 1 mm, ovvero quella dei telecomandi tradizionali).
Per domotizzare telecomandi rolling code, è disponibile questa guida.

ATTENZIONE: per la domotizzazione di condizionatori/climatizzatori/inverter tradizionali tramite infrarossi su Home Assistant è necessario seguire, di questa guida, la sola parte relativa alla cattura dei codici; per l’invio (e quindi per il controllo), la guida da utilizzare è questa. Quella invece per domotizzare impianti Hi-Fi e TV tradizionali è questa.

Al tema dell’uso di infrarossi e radiofrequenze in domotica abbiamo anche dedicato un episodio del nostro podcast.

Si parte

Spiegazione contesto

Per catturare e inviare codici tramite Broadlink usando Home Assistant sono necessari due servizi:

  • broadlink.send
  • broadlink.learn

tali servizi si attivano solo configurando (almeno) uno speciale “Switch” chiamato “learner”, il quale può anche essere eventualmente utilizzato per l’invio di due codici infrarossi/radiofrequenza, uno per quando viene attivato e uno per quando viene disattivato. Di solito, comunque, lo si configura e ci se ne dimentica: lo si “usa” infatti solo per far sì che i due servizi di cui sopra vengano definiti. Tale switch è comunemente chiamato “learner”.

Configurazione Broadlink

Per utilizzare il componente “Broadlink” è necessario che l’attuatore (quale sia il modello) sia già configurato e quindi presente sulla nostra Wi-Fi. Per far in modo che l’emettitore infrarosso entri (e resti) dentro la vostra Wi-Fi è sufficiente utilizzare l’app mobile  “e-Control” (per Android e iOS) e seguire le istruzioni a schermo.

N.b. Utilizzare l’app “Broadlink” (per Android o per iOS) al posto della “e-Control” per la prima configurazione dell’attuatore fa sì che esso non funzioni con Home Assistant. In caso si sia commesso questo “errore” tattico, resettare il dispositivo ed effettuare la configurazione tramite “e-Control”.

Finita la prima configurazione una tantum sarà poi necessario che l’attuatore Broadlink possegga, all’interno della nostra Wi-Fi, un IP fisso adottando la tecnica del “MAC Binding” sul router. Per farlo, si consiglia la lettura di questa guida. All’atto dell’assegnare un IP fisso al Broadlink si consiglia di appuntarsi da parte sia l’IP assegnato sia il “MAC Address” (indirizzo fisico) dell’attuatore: entrambe queste informazioni serviranno più avanti.

Configurazione servizi

La configurazione base per l’attivazione dei servizi tramite la definizione di uno “switch learner” è la seguente:

# Esempio di configurazione learner
switch:
  - platform: broadlink
    host: IP_ADDRESS
    mac: MAC_ADDRESS
    timeout: 30
    friendly_name: "Dispositivo Broadlink"
    type: rm_mini
    switches:
      learner:
        friendly_name: "Learner"
        command_on: ''
        command_off: ''

Dove:

host(stringa, richiesta) L’IP del dispositivo
mac(stringa, richiesta) L’indirizzo MAC del dispositivo
timeout(intero, opzionale) Il timeout, in secondi, per collegarsi al dispositivo
friendly_name(stringa, opzionale) Il nome da utilizzare per visualizzare lo switch presso il frontend
type(stringa, opzionale Il modello di Broadlink. Scegliere tra: rm, rm2, rm_mini, rm_pro_phicomm, rm2_home_plus, rm2_home_plus_gdt, rm2_pro_plus, rm2_pro_plus2, rm2_pro_plus_bl, rm_mini_shate, sp1, sp2, honeywell_sp2, sp3, spmini2, spminiplus or mp1. I device di tipo sc1 vanno registrati come sp2
switches(array, opzionale) L’array che contiene tutti gli switch

identifier(stringa, obbligatoria) Il nome dello switch. Può contenere più elementi

command_on(stringa, obblicatoria) Il codice in Base64 da inviare per l’accensione dell’interruttore
command_off(stringa, obblicatoria) Il codice in Base64 da inviare per l’accensione dell’interruttore
friendly_name (stringa, opzionale) Il nome da utilizzare per visualizzare lo switch presso il frontend
slots(array, opzionale) Il nome da utilizzare per i 4 slot nell’uso con una ciabatta M1. Se non configurati, i nomi saranno data dalla somma della stringa del friendly_name dello switch più il numero dello slot

slot_1(stringa, opzionale) Nome dello slot 1
slot_2(stringa, opzionale) Nome dello slot 2
slot_3(stringa, opzionale) Nome dello slot 3
slot_4(stringa, opzionale) Nome dello slot 4
USO CON WINDOWS

In caso Home Assistant sia in esecuzione su Windows è necessario installare l’ultima versione disponibile di PyCripto-Wheels.

Per far ciò, recarsi sulla sua pagina presso GitHub, segnarsi il nome del file dell’ultimo rilascio (eg. “pycrypto-2.6.1-cp35-none-win32.whl” – quella utile alla propria versione di Windows, 32 o 64 bit) ed eseguire da prompt di comando il seguente comando:

pip install --use-wheel --no-index --find-links=https://github.com/sfbahr/PyCrypto-Wheels/raw/master/pycrypto-2.6.1-cp35-none-win_amd64.whl pycrypto

provvedendo ad adeguare il nome del pacchetto in base al nome dell’ultimo rilascio.

Cattura dei codici

Prima di porsi il problema di catturare codici, la cosa più sana è fare un salto sul nostro ARCHIVIO COLLABORATIVO di codici infrarossi/radiofrequenza. Con un po’ di fortuna, potresti già trovare il lavoro fatto. Differentemente, non dimenticarti (sempre tramite quella pagina) dopo aver raccolto i tuoi, di inviarli all’archivio!

La cattura dei codici si effettua mettendo l’attuatore Broadlink “in ascolto”. Per farlo è infatti sufficiente recarsi presso la voce di menu “Strumenti per gli sviluppatori” > “Servizi“, selezionare il servizio “broadlink.learn” e inserire la configurazione (in notazione YAML), come da esempio che segue:

host: ip_del_broadlink

dove ovviamente “ip_del_broadlink” sia l’IP del dispositivo da utilizzare per acquisire i codici. Cliccare infine su “Call Service“.

A questo punto – per 30 secondi che seguiranno – il Broadlink (indicato tramite l’IP) sarà in “ascolto” di eventuali codici infrarossi e/o in radiofrequenza. Premendo entro 20 secondi un pulsante sul telecomando/radiocomando (avendo cura di puntarlo verso il Broadlink, se si tratta di un telecomando a infrarossi), Home Assistant riceverà dal Broadlink il rispettivo codice Base64 e lo elencherà presso l’elenco delle notifiche dell’interfaccia utente (icona della campanella in alto a destra), ad esempio:

Broadlink Learner su Home Assistant

Un codice può apparire come una lunga stringa di caratteri, tipo:

JgAaABweOR4bHhwdHB4dHRw6HhsdHR0dOTocAA0FAAAAAAAAAAAAAAAAAAA=

Infine salvare tale stringa e conservarla da parte.

ALTERNATIVA

Si dirà: “potevate dirlo prima“, ma per catturare i codici esiste una scorciatoia. Non è stato detto prima – nella presente guida – perché comunque la definizione dell’entità switch “learner” è un passaggio necessario, il più delle volte, all’atto di controllare un dispositivo Broadlink via Home Assistant. Ciò detto, qualora la procedura di cattura codici descritta in questa guida risulti un tantino scomoda (quale è), l’alternativa – se si possiede un computer con sistema operativo Windows – è descritta qui.

Invio dei codici

A questo punto è possibile utilizzare i codici acquisiti per inviarli, arbitrariamente, tramite Home Assistant, il quale utilizzerà il Broadlink (o i Broadlink) per l’invio. A tal scopo si utilizza il servizio broadlink.send.

ATTENZIONE: per la domotizzazione di condizionatori/climatizzatori/inverter tradizionali tramite infrarossi su Home Assistant la guida da utilizzare è questa. Quella invece per domotizzare impianti Hi-Fi e TV tradizionali è questa.

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

VIA SCRIPT/AUTOMAZIONE

Per gli script (ma anche per le automazioni) è possibile utilizzare un blocco “service” analogo al seguente:

script:
  la_mia_sequenza:
    sequence:
      - service: broadlink.send
        data:
          host: "ip_del_broadlink"
          packet:
            - "codice-da-inviare-numero-1"
            - "codice-da-inviare-numero-2"
            - "codice-da-inviare-numero-3"

Spiegazione dei campi:

entity_id(Stringa, obbligatoria) Il nome dell’entità “Remote” da utilizzare
device(Stringa, obbligatoria) Il nome del telecomando virtuale
command(Stringa, obbigatoria) 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 “broadlink.send” e inserire la configurazione (in notazione YAML), come da esempio che segue:

host: IP_DEL_BROADLINK
packet: codice-da-inviare

Una volta cliccato su “Chiama servizio“, il segnale infrarosso o radiofrequenza che sia verrà inviato.


Home Assistant Official LogoATTENZIONE: 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.