Componente Home Assistant “Broadlink”

6 minuti di lettura
Produttore: Home Assistant Community
Disponibilità: incluso nell’HUB personale Home Assistant
Categoria: software
Tipologia: componente Home Assistant
Difficoltà di implementazione: bassa
Revisione scheda: 2.0

Broadlink RM Mini 3 inclinatoIl componente “Broadlink” di Home Assistant fornisce il supporto ai dispositivi Broadlink per consentire l’invio di codici infrarossi e/o in radiofrequenza (in base al modello di Broadlink in uso) dalla propria domotica personale, di fatto consentendoci di domotizzare componenti non nativamente domotici (per esempio climatizzatori tradizionali).

Inoltre, il componente consente di integrare alla configurazione Home Assistant il multi-sensore Broadlink A1 e-Air.

Il supporto all’invio di codici infrarossi e/o in radiofrequenza si attiva presso Home Assistant tramite l’aggiunta in configurazione di almeno un interruttore “virtuale” definito tramite il componente il quale, una volta creato, genera implicitamente due servizi fondamentali:

  • broadlink.send
  • broadlink.learn

i quali servono rispettivamente all’invio e alla ricezione dei codici (quest’ultimo per l’acquisizione degli stessi).

Una volta creato almeno uno switch Broadlink – e di conseguenza i servizi di cui sopra – sarà possibile inviare codici infrarossi e/o in radiofrequenza in vari modi:

  • tramite lo switch stesso/i;
  • tramite servizio broadlink.send;
  • tramite componenti di terze parti (come SmartIR).

Nel primo caso, oltre a configurare lo switch al fine di creare i servizi è possibile anche utilizzarlo per inviare un codice diverso (o una sequenza) per ciascuno dei due stati previsti on” e “off“. Tra i tanti usi che si possono portare come esempio, uno è quello di definire un interruttore che accenda/spegna la televisione tramite l’invio di appositi codici.

Nel secondo caso è invece possibile utilizzare direttamente il servizio al fine di inviare un determinato codice: sarà sufficiente evocare il servizio (da frontend, da automazione, da script eccetera) e, come “Service Data”, passargli un payload che contenga codice e indirizzo IP del Broadlink da utilizzare per l’invio:

#esempio di un payload tipo per il servizio broadlink.send
{"host":"192.168.1.100", "packet":"codice_da_inviare"}

Nel terzo caso, invece, si tratta di usare componenti esterni (ad esempio “SmartIR“) al fine di generare delle entità di diversa natura (eg. condizionatori, ventilatori, media player) i quali vengano poi controllati tramite l’invio di codici infrarossi e/o in radiofrequenza.


N.b. questo componente piattaforma permette di controllare anche dispositivi di tipo sp1, sp2, honeywell_sp2, sp3, spmini2, spminiplus e mp1, i quali non utilizzano codici infrarossi né radiofrequenza, ma comandi diretti via rete.


Configurazione

La configurazione elementare di uno switch basato su questa piattaforma è molto semplice:

switch:
  - platform: broadlink
    host: IP_ADDRESS
    mac: 'MAC_ADDRESS'

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 infrarossi/radiofrequenza

Prima di porsi il problema di catturare i 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!

Per definire switch e/o script basati sull’invio di codici infrarossi/radiofrequenza è necessario – prima, ovviamente – dotarsi di tali codici.

L’esempio portato all’inizio, ovvero quello di definire uno switch per accendere/spegnere la TV tramite raggi infrarossi, prevederà  il collezionamento di due codici infrarossi, quello appunto di accensione/spegnimento erogati dal telecomando originale.

ATTENZIONE: in caso si abbia a disposizione un computer Windows, in alternativa alle metodiche descritte in questo paragrafo si consiglia di utilizzarne una più rapida e pratica basata sul TOOL gratuito “Broadlink Manager”, descritta in dettaglio in questa guida.

La prima cosa da fare è dunque definire uno switch virtuale che crei, all’interno di Home Assistant, di due servizi fondamentali:

  • broadlink.learn
  • broadlink.send

Il primo servizio sarà necessario per l’apprendimento di codici, il secondo per l’invio (utilizzato dalle entità che definiremo in configurazione.

Definiamo dunque questo primo switch:

switch:
  - platform: broadlink
    host: 192.168.1.2
    mac: '00:00:00:00:00:00'
    friendly_name: "Attuatore Broadlink"
    type: rm
    switches:
      learner:
        friendly_name: "Learner"
        command_on: ''
        command_off: ''

N.b. I campi “host” e “mac” indicati sono solo d’esempio e andranno quindi valorizzati con IP (fisso – leggi qui come impostarlo) e indirizzo MAC del nostro dispositivo Broadlink, così come il campo “type“. I campi “on” e “off” sono lasciati intenzionalmente vuoti.

A questo punto riavviare Home Assistant e, sulla colonna di sinistra del frontend selezionare, sotto il menu “Developer Tools” la prima icona a sinistra, ovvero “Services”.

Selezionare poi dal menu a tendina il servizio broadlink.learn e, alla voce “Service Data”, indicare:

{"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 20 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 (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=

A questo punto salvare tale stringa e conservarla da parte.

N.b. Tutti i dispositivi Broadlink in grado di ricevere/inviare codici in radiofrequenza accettano e inviano solo codici fissi. I telecomandi che utilizzino rolling code non sono supportati. Per domotizzare tali telecomandi si consiglia la lettura di questa guida.

Esempi di configurazione

Dopo aver visto come collezionare i codici, vediamo come configurare degli switch reali.
L’esempio che segue propone la configurazione (funzionante) di più interruttori per controllare l’accensione di TV Philips e LG:

switch:
  - platform: broadlink
    host: 192.168.1.2
    mac: 'B4:43:0D:CC:0F:58'
    timeout: 15
    switches:
      # Funzionano con molte TV Philips e LG:
      tv_philips:
        friendly_name: "Philips Tv Power"
        command_on: 'JgAcAB0dHB44HhweGx4cHR06HB0cHhwdHB8bHhwADQUAAAAAAAAAAAAAAAA='
        command_off: 'JgAaABweOR4bHhwdHB4dHRw6HhsdHR0dOTocAA0FAAAAAAAAAAAAAAAAAAA='
      tv_lg:
        friendly_name: "LG Tv Power"
        command_on: 'JgBYAAABIJISExETETcSEhISEhQQFBETETcROBESEjcRNhM1EjcTNRMTERISNxEUERMSExE2EjYSNhM2EhIROBE3ETcREhITEgAFGwABH0oSAAwzAAEfShEADQU='
        command_off: 'JgBYAAABIJISExETETcSEhISEhQQFBETETcROBESEjcRNhM1EjcTNRMTERISNxEUERMSExE2EjYSNhM2EhIROBE3ETcREhITEgAFGwABH0oSAAwzAAEfShEADQU='
      tv_lg_hdmi1_hdmi2:
        friendly_name: "LG Tv HDMI12"
        command_on: 'JgBIAAABIZMRExITEjYSExMRERURExEUEDkRNxEUEjYSNhM3ETcSNxITETgSNhI2ExMQExE4ETYSNxIUERMSExE4ETcRFBETEQANBQ=='
        command_off: 'JgBQAAABJJMSEhISETgSEhITEBMSEhMSETcSNxMREjcSNxI3EjcSOBETERITNhM2EhITERM2EzcRNxI3ExISEhI3EjcRExETEgAFLQABJEoRAA0FAAAAAAAAAAA='
      tv_lg_hdmi3:
        friendly_name: "LG Tv HDMI3"
        command_on: 'JgBIAAABIZMSFBISETgRExEUERQQFBETEjcTNhMSETgRNxE3EjcROBM2ERMSFBE4ERMSNxM2EjUSFBE2ETgRExM2ExITEhATEwANBQ=='
      tv_lg_av1_av2:
        friendly_name: "LG Tv AV12"
        command_on: 'JgBIAAABIpQPFBITETgSEw8UEhQSEhEVDzgSOBAUETgQOQ84EjgRNxITETgSExA5EDgREhI3EhMROBMSEDkQFBETEjYTEhE4EQANBQ=='
        command_off: 'JgBIAAABH5YPFBETETgUERAUEBURFBATETgROBEUETcSNxE4ETcSOBISEBUQFREUEjUSFBA5ETcRNxE4ETkQOBAUEjcRFRAUEQANBQ=='

N.b. I campi “host” e “mac” sono solo d’esempio e andranno valorizzati con IP (fisso – leggi qui come impostarlo) e indirizzo MAC del nostro dispositivo, così come il campo “type“.

Sequenze via script

Come anticipato, è anche possibile definire delle sequenze di invio codici utilizzando il servizio “broadlink.send” sopra illustrato.

Per far ciò utilizzeremo utilizzeremo uno script di Home Assistant (la stessa tecnica – nello stesso modo – si può utilizzare presso le “action” presenti nelle automazioni).

L’esempio è il seguente (n.b. il nome dello script dev’essere SEMPRE minuscolo):

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"

Ovviamente può rendersi necessaria l’introduzione di tempi di attesa tra un invio e l’altro.

Per far ciò si utilizzerà un delay; nell’esempio che segue i due codici saranno separati da un’attesa di 2 secondi.

script:
  la_mia_sequenza_con_attesa:
    sequence:
      - service: broadlink.send
        data:
          host: "ip_del_broadlink"
          packet:
            - "codice-da-inviare-numero-1"
      - delay:
          # supporta seconds, milliseconds, minutes, hours
          seconds: 2
      - service: broadlink.send
        data:
          host: "ip_del_broadlink"
          packet: "codice-da-inviare-numero-2"

Gli script così definiti potranno poi essere innescati nelle automazioni o anche direttamente da switch di tipo template:

switch:
  platform: template
  switches:
    switch_numero_uno:
      value_template: true
      turn_on:
        service: script.la_mia_sequenza
      turn_off:
        service: script.la_mia_sequenza_con_attesa

Broadlink A1 e-Air

Come anticipato in testa, questo componente è utile anche all’integrazione dei multi-sensore Broadlink A1 e-Air.
A questo aspetto abbiamo dedicato una guida specifica.


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.


Please comment below