Piattaforma Home Assistant “Broadlink RM Switch”

Produttore: Home Assistant Community
Disponibilità: incluso nell’HUB personale Home Assistant
Categoria: software
Tipologia: piattaforma Home Assistant
Famiglia: componente “Switch” Home Assistant
Difficoltà di implementazione: media

Broadlink RM Mini 3 inclinatoLa piattaforma “Broadlink RM Switch”, figlia del componente “Switch” di Home Assistant, serve per definire in configurazione uno o più interruttori (“switch”) atti all’invio di codici infrarossi e/o radiofrequenza 433mhz tramite l’uso di dispositivi Broadlink (come l’RM Pro/Pro+, l’RM Mini 3 o altri modelli RMx).

Tali entità “Switch” (interruttore) prevedo due stati, “on” e “off”, ai quali possono essere assegnati diversi codici da inviare quando lo stato viene impostato (manualmente o tramite automazioni, scene ecc.).
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 infrarossi. Oltre a degli “switch”, questa piattaforma è abilitante alla definizione di “script” utili all’invio di sequenze predeterminate di codici infrarossi e/o in radiofrequenza.

L’approccio di funzionamento di questa piattaforma non è molto diverso da quello utilizzato dal componente aggiuntivo “Broadlink IR Climate Component“, il quale permette di domotizzare un condizionatore/climatizzatore/inverter (e altro) utilizzando appunto un dispositivo Broadlink (infrarosso).


Nb. questa 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:

# Esempio di configurazione base
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 un finto switch che crei, all’interno di Home Assistant, la consapevolezza della presenza di un dispositivo Broadlink (tra quelli sopra elencati) sulla rete.

Tale consapevolezza è necessaria per dotarci di due servizi su Home Assistant:

  • switch.broadlink_learn_command_xxx_xxx_xxx_xxx
  • switch.broadlink_send_packet_xxx_xxx_xxx_xxx

dove xxx_xxx_xxx_xxx è l’IP assegnato al dispositivo.
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:

# Esempio di configurazione learner
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: ''

Nb. 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 switch.broadlink_learn_command_xxx_xxx_xxx_xxx e cliccare “call”.

A questo punto – per 20 secondi che seguiranno – il Broadlink 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à sulla prima pagina dell’interfaccia utente, 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.

Nb. Tutti i dispositivi Broadlink in grado di ricevere/inviare codici in radiofrequenza accettano e inviano solo codici fissi a 433mhz. I telecomandi che utilizzino rolling code non sono supportati. Per domotizzare

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:

# Esempio di configurazione multi-switch
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=='

Nb. 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

switch.broadlink_learn_command_xx.xx.xx.xx

sopra illustrato.

Per far ciò utilizzeremo il componente “Script” di Home Assistant.
Un esempio è il seguente (Nb. il nome dello script dev’essere SEMPRE minuscolo):

script:
  la_mia_sequenza:
    sequence:
      - service: switch.broadlink_send_packet_xx_xx_xx_xx
        data:
          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: switch.broadlink_send_packet_xx_xx_xx_xx
        data:
          packet:
            - "codice-da-inviare-numero-1"
      - delay:
          # supporta seconds, milliseconds, minutes, hours
          seconds: 2
      - service: switch.broadlink_send_packet_xx_xx_xx_xx
        data:
          packet: "codice-da-inviare-numero-2"

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

# Esempio di switch template che innesca i due script-sequenza sopra definiti
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


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.

🔻 Clicca QUI per commentare l'articolo. 🔻