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

5 minuti di lettura
● Resta sempre aggiornato grazie al nostro canale Telegram e alla nostra newsletter settimanale!
Scopi della guida:
  • Gestire telecomandi virtuali su Home Assistant
  • Livello di difficoltà: bassa
  • Categoria d’integrazione: Local Polling
Concetti affrontati:
  • Configurazione software
Componenti software utilizzate:

Prerequisiti:

Dispositivi fisici utilizzati:
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.0

telecomando

Abstract

Nella prima parte di questa guida abbiamo visto come definire presso la propria domotica personale basata su Home Assistant dei veri e proprio “telecomandi virtuali” i quali, quando azionati (da interfaccia come da automatismi), di fatto producano la trasmissione di specifici codici infrarosso/radiofrequenza (precedentemente acquisiti da telecomandi originali) tramite attuatori Broadlink (eg. Broadlink RM Mini 3).

In questa seconda parte vedremo come gestire dei telecomandi precedentemente gestisti, definendo un’interfaccia grafica utilizzando il componente “Custom Card”. Tale guida si applica comunque anche in presenza di altre entità di tipo “Remote” (definite tramite l’uso di altre piattaforme figlie diverse da “Broadlink”).

Si parte

Assunti

Per l’applicazione della presente guida si dà per scontata l’avvenuta lettura e comprensione della prima parte della stessa.

Si assume inoltre di avere disponibile in configurazione un’entità chiamata remote.broadlink ottenuta tramite la prima parte della guida e, presso tale entità, aver già registrato i tasti di un comune telecomando decoder Sky chiamandolo, come device presso l’entità, “Sky“.

La configurazione può essere ovviamente personalizzata: l’entità potrà chiamarsi in altri modi e potrà essere generata dall’integrazione non di un emettitore Broadlink ma piuttosto di altre piattaforma di integrazione (per esempio un Logitech Harmony integrato a Home Assistant tramite la propria piattaforma). Anche il telecomando registrato e i relativi tasti potrebbero serenamente essere altri (quelli di una tv, di un impianto Hi-Fi o molto, molto altro).

Inoltre, è necessario avere installato su Home Assistant il custom component “Button Card” (vedi guida).

Spiegazione

Purtroppo l’interfaccia grafica di Home Assistant, Lovelace UI, non dispone di una naturale rappresentazione grafica per l’entità “Remote”, ovvero i telecomandi. Per dotarci quindi di una “pulsantiera” facente funzioni andremo ad utilizzare il custom component “Button Card“, il quale consente all’utente di definire delle stratificazioni orizzontali e verticali di pulsanti, andando così a creare un telecomando grafico tale da evocare l’invio dei codici alla pressione dei vari tasti.

L’interfaccia che andremo a creare tramite la presente guida rappresenta un telecomando decoder Sky, ma è ovvio che lo scopo è insegnare l’approccio, così da consentire all’utente di creare telecomandi personalizzati per i più disparati usi.

Il telecomando che andremo a realizzare sarà il seguente:

Home Assistant - Lovelace UI - Remote tramite Button Card

Come si nota, sono presenti la maggior parte dei tasti tipicamente utilizzati su questo tipo di telecomandi, inclusi gli avanzamenti rapidi avanti/indietro, il tasto info e quant’altro. Ovviamente questo è solo un esempio: i tasti implementabili tramite l’adozione della presente guida sono i più disparati.

Definire una nuova card

Ciò che andremo a fare è definire una singola manual card di tipo “vertical-stack” (stratificazione verticale): al suo interno definiremo tante “horizontal-stack” (stratificazione orizzontale) quante saranno le righe di tasti necessarie. In ogni riga, definiremo poi i tasti sfruttando la tipologia “custom:button-card” derivante dall’uso di “Button Card”.

In pratica:

type: vertical-stack
cards:
  - type: horizontal-stack  #riga 1
    cards:
      - type: custom:button-card #tasto 1
        ...
      - type: custom:button-card #tasto 2
        ...
  - type: horizontal-stack  #riga 2
    cards:
      - type: custom:button-card #tasto 1
        ...
      - type: custom:button-card #tasto 2
        ....

Per aggiungere il nostro nuovo telecomando sarà sufficiente entrare nell’editor visuale di Lovelace (i tre puntini in alto a destra sul frontend web/app, poi “Configura l’interfaccia utente“) e cliccare sul “+“, selezionando come tipologia “MANUAL CARD“.

Il codice da inserire lo scopriamo ora, di seguito.

Anatomia del tasto

Vediamo, tanto per cominciare, quale sia l’anatomia di ogni blocco di codice di tipo “custom:button-card“, ovvero quello di ogni signolo tasto.

Ogni tasto “deve far qualcosa”. Le caratteristiche che andremo a personalizzare sono:

  • il colore di sfondo;
  • l’icona da visualizzare;
  • l’azione da eseguire quando premuto.

Il colore di sfondo è semplice da definirsi, basta utilizzare queste due righe:

color_type: card
color: rgb(0, 0, 0)

dove, ovviamente, il colore indicato sarà dato dalla tripletta di numeri interi dentro rgb().

L’icona, come sempre su Home Assistant, si definisce tramite

icon: mdi:nomeicona

dove nomeicona si identifica cercando l’icona d’interesse sul solito materialdesignicons.com.

Infine, l’action. In questa guida prederemo in analisi due possibili gesture:

  • tap, quando si preme una volta su un tasto;
  • hold, quando di trattiene la pressione.

Un tasto che disponga di entrambe le funzioni potrebbe esser così configurato:

tap_action:
  action: call-service
  service: remote.send_command
  service_data:
    entity_id: remote.broadlink
    device: sky
    command: volume_down
hold_action:
  action: call-service
  service: remote.send_command
  service_data:
    entity_id: remote.broadlink
    device: sky
    command: volume_down
    num_repeats: 5
    delay_secs: 0.05

in questo esempio utilizziamo la tap_action per inviare una volta, tramite remote.broadlink, il comando volume_down del telecomando sky (abbassamento); utilizziamo invece la hold_action per inviare lo stesso comando ma cinque volte di seguito. Questa seconda action è infatti utile per l’esecuzione ripetuta di alcuni comandi specifici come, appunto, la variazione di volume, che solitamente viene fatta tenendo premuto. Il comportamento derivante non è precisamente lo stesso, ma simile.

N.b. Ovviamente, lo ripetiamo, i nomi del remote, device e command sono a carico dell’utente. Questo è solo un esempio, ovviamente i nomi variano in base alla propria configurazione.

Infine, il tasto viene dunque così definito (esempio del tasto per l’abbassamento del volume):

type: custom:button-card
color_type: card
color: rgb(75, 75, 77)
icon: mdi:volume-minus
tap_action:
  action: call-service
  service: remote.send_command
  service_data:
    entity_id: remote.broadlink
    device: sky
    command: volume_down
hold_action:
  action: call-service
  service: remote.send_command
  service_data:
    entity_id: remote.broadlink
    device: sky
    command: volume_down
    num_repeats: 5
    delay_secs: 0.05

Possono anche esser inseriti dei bottoni “vuoti”: per esempio accanto al tasto “0” ce ne sono due,  uno a destra e uno a sinistra:

type: custom:button-card
color_type: blank-card

Codice manual card

Vediamo infine il codice esemplificativo relativo alla sola prima riga del telecomando sopra rappresentato graficamente, quello da inserire quando si crea la manual card:

type: vertical-stack
cards:
  - type: horizontal-stack
    cards:
      - type: custom:button-card
        color_type: card
        tap_action:
          action: call-service
          service: remote.send_command
          service_data:
            entity_id: remote.broadlink
            device: Sky
            command: mute
        icon: mdi:volume-off
        color: rgb(75, 75, 77)
      - type: 'custom:button-card'
        color_type: card
        tap_action:
          action: call-service
          service: remote.send_command
          service_data:
            entity_id: remote.broadlink
            device: Sky
            command: power
        icon: mdi:power
        color: rgb(150, 150, 150)
      - type: custom:button-card
        color_type: card
        tap_action:
          action: call-service
          service: remote.send_command
          service_data:
            entity_id: remote.broadlink
            device: Sky
            command: previous_channel
        icon: mdi:swap-horizontal-bold
        color: rgb(75, 75, 77)

Questo codice crea i solo primi tre tasti, ovvero quellii del mute, dell’accensione e dello switch canale precedente.

DOWNLOAD

A questo punto è possibile scaricare il codice completo del telecomando proposto sotto forma di manual card, così da poterlo adottare, personalizzare e modificare come si crede.

Il codice completo è disponibile presso il nostro repository GitHub.


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.