“homebridge-broadlink-rm”: installare e configurare il plugin per Homebridge

Scopi della guida
Concetti affrontati:
  • Installazione e configurazione software
Componenti software utilizzate:
Prerequisiti
Dispositivi fisici utilizzati:
GUIDA maggiormente indicatA per:

Apple-200x200

Note e disclaimer
  • qualsiasi modifica all'impianto elettrico dev'essere effettuata da personale qualificato
  • qualsiasi modifica attuata in proprio è a propria responsabilità personale nonché a proprio rischio e pericolo (la presente guida ha puro scopo didattico)
  • qualsiasi modifica attuata in proprio a un dispositivo ne fa decadere la garanzia.

Abstract

Il “homebridge-broadlink-rm” è un plugin Homebridge concepito per sfruttare in ambito domotico il Broadlink RM Mini 3, un dispositivo in grado di ricevere e soprattutto inviare segnali infrarossi, nonché il suo “fratello maggiore”, il Broadlink RM Pro/Pro+, capace di ricevere ed inviare anche segnali radio a 433mhz e 315mhz.

L’uso combinato di Homebridge, di questo plugin e di questi componenti permette di rendere domotici molti dispositivi domestici – tipicamente controllati via segnali infrarossi e/o segnali radio – e quindi controllarli e comandarli tramite HomeKit di Apple (app “Casa” si iOS), nonché Siri.

Indice

Installazione

L’installazione, come tutti i plugin Homebridge – è semplicissima.
Eseguire il seguente comando – su sistemi unix-based (linux, Raspberry ecc.) da terminale, da sistemi windows su prompt dei comandi:

npm install -g homebridge-broadlink-rm

e attendere il termine della procedura.
Nb. In caso Homebridge sia già in esecuzione come servizio (come descritto nella nostra guida di installazione di Homebridge), provvedere a interromperlo prima dell’installazione tramite il comando:

sudo systemctl stop homebridge

Aggiornamento

Per aggiornare il package è sufficiente eseguire il seguente comando:

sudo npm update -g -devhomebridge-broadlink-rm

Configurazione

Comprendere la configurazione

Come tutti i componenti aggiuntivi per Homebridge, successivamente l’installazione è necessario provvedere alla configurazione, la quale risiede all’interno del file config.json di Homebridge stesso. Per maggiori informazioni specifiche (su struttura, collocazione)  del file di configurazione, far riferimento a questa breve guida.

La configurazione del plugin “homebridge-broadlink-rm” prevede l’aggiunta al file di configurazione di una nuova piattaforma di nome BroadlinkRM. Un esempio di configurazione minimale (senza accessori definiti) è la seguente:

"platforms": [
  {
   "platform": "BroadlinkRM",
   "name": "Broadlink RM",
   "hideScanFrequencyButton": false,
   "hideLearnButton": false,
   "hideWelcomeMessage": true,
   "accessories": [
   ]
  }
]
  • platform“: definisce il nome della piattaforma, il quale dev’essere obbligatoriamente “BroadlinkRM
  • name“: definisce il nome dell’accessorio che verrà visualizzato su HomeKit
  • hideScanFrequencyButton“: definisce se visualizzare o meno (su HomeKit) un tasto che abilita la funzione di acquisizione codici radio (in caso si usi il modello Broadlink RM Pro/Pro+)
  • hideLearnButton“: definisce se visualizzare o meno (su HomeKit) un tasto che abilita la funzionalità di acquisizione codici esadecimali (HEX) infrarossi
  • hideWelcomeMessage“: definisce se mostrare il messaggio di benvenuto del plugin all’avvio di Homebridge
  • accessories“: definisce l’apertura di un sottoblocco dedicato alla definizione dei singoli accessori.
Come acquisire i codici HEX infrarossi e 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!

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.

Una volta aggiunta la piattaforma ed eseguito Homebridge, su HomeKit apparirà un pulsante denominato “LearnIR”. Per acquisire i codici HEX infrarossi dei nostri telecomandi e/o radiofrequenza dei nostri radiocomandi sarà necessario posizionarsi davanti al terminale con Homebridge in esecuzione e attivare tale pulsante. A questo punto, il Broadlink RM (qualunque modello) si metterà in “ascolto” di eventuali codici HEX infrarossi e/o radiofrequenza e, una volta ricevuti, li visualizzerà sul terminale tramite Homebridge.

Poniamo quindi il caso si vogliano acquisire tutti i codici del telecomando della TV. Innanzitutto, è conveniente utilizzare un foglio excel per segnarsi tutti i codici che si andranno ad acquisire, in modo da avere una tabella di riferimento quando si voglia configurare qualche nuovo accessorio o di vogliano effettuare delle modifiche alla configurazione.
Si preme dunque il tasto “LeanIR” sull’applicazione “Casa”, si punta il telecomando verso il Broadlink, si preme il tasto che si desidera acquisire e si osserva il terminale.
Ecco un esempio preso dal terminale Raspberry in fase di acquisizione del tasto “accensione” di una TV Samsung:

Broadlink RM cattura codici HEX

Il codice HEX – il quale solitamente è una stringa che comincia con “2600” – e appare così:

2600460093951237123812381213121212131213111312381238123812121213121311131213121212381213111312131113121312121238121312381139113911391138123812000d050000

Una volta censiti tutti i codici che ci interessano, possiamo andare a configurare gli accessori disponibili su HomeKit mediati da questo potentissimo plugin.

Accessorio: SWITCH (interruttore)

Il più banale – ma più versatile – degli accessori è l’interruttore. La configurazione base è simile alla seguente:

{
"name":"TV On/Off",
"type":"switch",
"data":{
  "on":"2600500000012...",
  "off":"2600500000012..."
}

Questa configurazione corrisponderà a un interruttore che in posizione ON invierà un certo codice (il primo), in OFF un altro.
Non è obbligatorio indicare codici per ogni funzionalità. Per esempio, è possibile indicare il codice ON ma non l’OFF, e viceversa. Questo è molto importante in caso dell’uso di una funzionalità secondaria di questo e di altri accessori, ovvero l’auto-on/auto-off. È infatti possibile definire interruttori che, dopo un certo numero di secondi (definibili), si auto-disattivino quando vengano attivati, oppure si auto-attivino quando vengono disattivati. Questo è molto comodo quando si vuole creare una specie di “bottone” che esegua un comando HEX e torni nello stato precedente. Infine, ulteriore importante funzionalità è quella di definire lo stato (acceso o spento) di un interruttore utilizzando il comando “ping”: nell’esempio di cui sopra, se il TV è collegato alla rete Wifi e risponde al ping, si può intendere come “acceso”, e quindi il plugin è in grado – opportunamente configurato –  di visualizzare su HomeKit lo stato dell’interruttore come acceso.

Un esempio più completo è questo:

{
  "name": "TV",
  "type": "switch",
  "pingIPAddress": "192.168.1.10",
  "pingIPAddressStateOnly": true,
  "pingFrequency": 90,

  "data": {
    "on": "2600500000012...",
    "off": "2600500000012..."
  }
}

L’ip indicato (esemplificativo) è quello assegnato al TV all’uso di determinarne lo stato.

In ultimo, è utile sapere che il contenuto dei campi “on” e “off” possono essere rappresentati anche da ulteriori blocchi, i quali contengano più codici HEX e/o codici HEX ripetuti. Questa caratteristica è condivisa anche con altri accessori e viene particolarmente utile laddove si vogliano creare degli scenari.

Poniamo si voglia creare un interruttore che, se attivato, invii più volte lo stesso codice HEX (per esempio, quello per aumentare il volume della TV):

{
  "name":"Volume+",
  "type":"switch",
  "enableAutoOff": true,
  "onDuration": 2,
  "data": [
    {
      "data": "2600500000012...",
      "sendCount": 5,
      "interval": 0.3
    }
  ]
}

In questo esempio, l’attivazione dell’interruttore “Volume+” causerà l’invio dell’HEX indicato per 5 volte con intervallo di 0,3 secondi tra ogni invio.

Concludendo, potrebbe essere comodo definire un interruttore che, per esempio, se attivato accenda la TV e poi accenda un decoder SAT, impostandolo su un canale specifico. La configurazione apparirebbe all’incirca così:

{
  "name": "TV > SAT",
  "type": "switch",

  "enableAutoOff": true,
  "onDuration": 1,

  "data": [{
      "data": "2600500000012...",
      "sendCount": 1,
      "pause": 2
    },
    {
      "data": "2600500000012...",
      "sendCount": 1,
    }
  ]
}

Il quale invia, all’attivazione, il primo codice, attende 2 secondi, poi invia il secondo.

Tutte le specifiche relative a questo accessorio sono disponibili qui.

Accessorio: OUTLET (PRESA DI CORRENTE)

Questo accessorio è identico all’accessorio interruttore, e ha le medesime funzionalità e scopi. Semplicemente, viene “mostrato” a HomeKit come presa di corrente e non come interruttore.
Tutte le specifiche relative a questo accessorio sono disponibili qui.

Accessorio: FAN (VENTILATORE)

L’accessorio ventilatore è comodo per controllare, appunto, un ventilatore nelle sue più comuni funzioni, ovvero accensione/spegnimento, eventuale velocità di rotazione, eventuale orientamento di rotazione (oraria/antioraria), eventuale oscillazione.

La comodità di questo accessorio sta nella possibilità di essere utilizzato, tramite gli appositi codice HEX, anche per controllare le funzionalità di ventilazione di un climatizzatore/condizionatore e non solo un normale ventilatore a pale, da terra o soffitto che siano..

Un esempio di configurazione è il seguente:

{
  "name": "Ventilatore",
  "type": "fan",
  "data": {
    "on":"2600500000012...",
    "off":"2600500000012...",
    "swingToggle": "2600500000012...",
    "fanSpeed10": "2600500000012...",
    "fanSpeed20": "2600500000012...", 
    "fanSpeed30": "2600500000012...",
    "fanSpeed40": "2600500000012...",
    "fanSpeed50": "2600500000012...",
    "fanSpeed60": "2600500000012...",
    "fanSpeed70": "2600500000012...",
    "fanSpeed80": "2600500000012...",
    "fanSpeed90": "2600500000012...",
    "fanSpeed100": "2600500000012..."
  }
}

Tutte le specifiche relative a questo accessorio sono disponibili qui.

Accessorio: light (luce)

Esistono in commercio soluzioni per illuminotecnica – non domotiche – controllabili con telecomandi ad infrarossi o radiocomandi a 433mhz, il che le rende candidate perfette per una rapida domotizzazione tramite Broadlink RM e questo stupendo plugin per Homebridge.
Nell’esempio che andiamo a presentare, oggetto della domotizzazione è una luce iridescente regolabile (sia come colori che come intensità luminosa) controllata da un telecomando infrarosso simile a questo:

Telecomando Luci HUE Light

Catturiamo tutti i codici HEX dopodiché configuriamo un accessorio “light” in questo modo:

{
  "name": "HueTV Light",
  "type": "light",

  "data": {
    "on": "2600500000012...",
    "off": "2600500000012...",

    "brightness10": "2600500000012...",
    "brightness20": "2600500000012...",
    "brightness30": "2600500000012...",
    "brightness40": "2600500000012...",
    "brightness50": "2600500000012...",
    "brightness60": "2600500000012...",
    "brightness70": "2600500000012...",
    "brightness80": "2600500000012...",
    "brightness90": "2600500000012...",
    "brightness100": "2600500000012...",

    "hue0": "2600500000012...",
    "hue120": "2600500000012...",
    "hue230": "2600500000012...",
    "hue31": "2600500000012...",
    "hue14": "2600500000012...",
    "hue43": "2600500000012...",
    "hue63": "2600500000012...",
    "hue136": "2600500000012...",
    "hue161": "2600500000012...",
    "hue188": "2600500000012...",
    "hue210": "2600500000012...",
    "hue245": "2600500000012...",
    "hue260": "2600500000012...",
    "hue279": "2600500000012...",
    "hue300": "2600500000012..."
 }
}

Il che si traduce in una user experience di questo tipo:

Broadlink e Luce HUE Light su Homebrige

Tutte le specifiche relative a questo accessorio sono disponibili qui.

Accessorio: garage-door-opener (apertura garage)

Questo accessorio è dedicato all’apertura meccanizzata di porte e cancelli, ed è tipicamente rivolto a chi abbia a disposizione un dispositivo simile tipicamente controllato con radiocomandi.
Una configurazione base di questo accessorio è la seguente:

{
  "name":"Porta del garage",
  "type":"garage-door-opener",
  "openCloseDuration":8,
  "data":{
    "open":"2600500000012...",
    "close":"2600500000012...",
    "lock":"2600500000012...",
    "unlock":"2600500000012..."
  }
}

la quale permette di definire i codici di apertura, chiusura, blocco e sblocco, nonché la durata del processo di chiusura.
I codici, come anticipato, sono tipicamente quelli in radiofrequenza prodotti da radiocomandi 433mhz, ma ATTENZIONE: sono supportati solo i radiocomandi nonrolling code.

Tutte le specifiche relative a questo accessorio sono disponibili qui.

Accessorio: lock (serratura)

Questo accessorio è dedicato all’apertura meccanizzata di serrature, ed è tipicamente rivolto a chi abbia a disposizione un dispositivo simile tipicamente controllato con radiocomandi.
Una configurazione base di questo accessorio è la seguente:

{
  "name":"Serratura",
  "type":"lock",
  "lockDuration":3,
  "unlockDuration":3,
  "data":{
    "lock":"2600500000012...",
    "unlock":"2600500000012..."
  }
}

la quale permette di definire i codici di apertura, chiusura, nonché la durata del processo di apertura e di chiusura.
I codici, come anticipato, sono tipicamente quelli in radiofrequenza prodotti da radiocomandi 433mhz, ma ATTENZIONE: sono supportati solo i radiocomandi nonrolling code.

Tutte le specifiche relative a questo accessorio sono disponibili qui.

Accessorio: window-covering (scuri)

Questo accessorio è utile per controllare scuri per finestre e porte finestre. In sostanza, permette di definire i codici HEX per il processo di apertura e di chiusura, inoltre può essere personalizzato al fine di determinare la durata del processo di apertura/chiusura e a quale percentuale di copertura lo scuro debba essere considerato aperto o chiuso.
Una configurazione di base di questo accessorio è la seguente:

{
  "name":"Scuro Camera",
  "type":"window-covering",
  "totalDurationOpen": 45,
  "totalDurationClose": 40,
  "data":{
    "open":"2600500000012...",
    "close":"2600500000012...",
    "stop":"2600500000012..."
  }
}

Tutte le specifiche relative a questo accessorio sono disponibili qui.

Accessorio: air-conditioner (condizionatore/climatizzatore d’aria)

Questo accessorio è forse, assieme all’interruttore, quello più utile e funzionale di tutto il plugin.
Permette, infatti, di configurare un accessorio su HomeKit denominato (A/C – air-conditioner) il quale, appunto, permette le regolazioni tipiche di un condizionatore/climatizzatore, quali temperatura, soglia di temperatura, riscaldamento e raffreddamento con target di temperatura. Tipicamente, questo accessorio viene configurato a partire da codici HEX infrarossi catturati dal proprio telecomando del condizionatore/climatizzatore.

Il plugin permette di configurare tanti codici HEX quante sono le temperature regolabili da telecomando; ad ogni temperatura è possibile indicare al plugin (e quindi a HomeKit) se quella temperatura faccia riferimento a una modalità riscaldamento (heat) o raffreddamento (cool). È inoltre possibile indicare quale sia la temperatura target di riferimento per la modalità di default per il riscaldamento e/o per il raffreddamento, nonché impostare a cosa corrisponda una eventuale modalità auto.
Infine, è bene sapere che il dispositivo “condizionatore/climatizzatore” presso HomeKit riporta come informazione aggiuntiva anche la temperatura dell’ambiente, dato fondamentale per configurare eventuali automazioni. Dato che di fatto questo dispositivo è “virtuale” in quanto definito su Homebridge, questo plugin ci viene incontro permettendoci di indicargli dove andare a raccogliere, eventualmente, quest’informazione cruciale.
Le fonti possono essere tre:

  • un numero arbitrario (inutile però ai fini di automatizzare la domotica)
  • un file di testo (in caso esista qualche altra fonte in grado di scrivere il dato su file system)
  • una telemetria MQTT (come per esempio un sensore domotico).

Tutto questa configurazione contribuisce a fornire una user experience di questo tipo:

Homebridge e Apple Homekit - condizionatore

Una configurazione “tipo” (assolutamente indicativa) può essere la seguente:

{
  "name":"Air Conditioner Advanced",
  "type":"air-conditioner",
  "autoCoolTemperature": 23,
  "autoHeatTemperature": 14,
  "autoSwitch": "A/C Auto Switch",
  "data":{
    "off":"2600500000012...",
    "temperature30":{
    "pseudo-mode":"heat",
    "data":"2600500000012..."
    },
    "temperature16":{
    "pseudo-mode":"cool",
    "data":"2600500000012..."
    }
  }
}

Tutte le specifiche relative a questo accessorio sono disponibili qui.

Considerazioni finali

In presenza di un singolo Broadlink RM (Mini o Pro/Pro+), non è necessario specificare nulla alla configurazione del plugin. In caso invece siano presenti più dispositivi, è necessario attribuire ad ognuno di essi un IP statico da indicare poi, in fase di definizione della configurazione, a ogni singolo accessorio, utilizzando il parametro “host“. Questo scenario si verifica in presenza di dispositivi diversi in stanze diverse, dove sarà necessari posizionare un Broadlink RM per ogni stanza da coprire.

Il plugin “homebridge-broadlink-rm” è un alleato insostituibile per chi voglia avventurarsi nella realizzazione di una propria domotica, sopratutto perché permette di domotizzare una grande quantità di componenti che altrimenti non potrebbero esserlo mai.

🔻 Clicca QUI per commentare l'articolo. 🔻