Rendere una striscia di LED colorati IR compatibile con Apple HomeKit (via Homebridge)

SCOPI DEL PROGETTO:
  • Domotizzare una striscia di LED colorati controllata tramite telecomando a infrarossi in modo da poterli utilizzare con Apple HomeKit e Siri
  • Livello di difficoltà: medio/basso
  • Costo: ridotto (<20 €)
CONCETTI AFFRONTATI:
COMPONENTI SOFTWARE UTILIZZATE:
DISPOSITIVI FISICI UTILIZZATI:
PROGETTO MAGGIORMENTE INDICATO 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.

Striscia LED HUE Multicolore

Abstract

Philips, col suo innovativo sistema Ambilight, ha portato da qualche anno nella sua linea di TV piatte un’innovazione affascinante, capace tramite LED montati posteriormente allo schermo di illuminare il muro con una luce colorata la quale cambia di intensità e tono coerentemente con le immagini sullo schermo.
Questo si traduce in una visione molto rilassante e piacevole. Chi vi scrive era scettico in merito alla validità della soluzione, per poi scoprire che si tratta effettivamente di un’ottima funzionalità – provare per credere.

Non tutti però dispongono di una TV Philips dotata di sistema Ambilight. Ora, oltre alla ovvia soluzione di comprarsene una, l’alternativa a basso costo esiste: acquistare una striscia LED da applicare al proprio TV e simulare l’esperienza sopra descritta. Certo: colori e intensità non cambieranno assieme alle immagini, ma relax e piacevolezza d’uso restano.

Inoltre, queste strisce LED possono essere utilizzate per illuminare ambienti domestici quali cucine, terrazzi (occhio al grado di protezione IP), mensole ecc. Hanno il vantaggio di costare e consumare poco, funzionare benissimo.

Illuminazione HUE LED per ambienti domestici

Tipicamente, le striscie LED vengono gestite tramite un piccolo telecomando, il quale controlla l’accensione, lo spegnimento, l’intensità luminosa e il colore da applicare all’illuminazione.

Telecomando Luci HUE Light

Lo scopo di questo progetto è domotizzare una di queste strisce in modo da renderle compatibili e controllabili tramite Apple HomeKit utilizzando l’accessorio “Luce” (previsto nel framework) appositamente configurato al fine di impostare sia i colori che l’intensità (nonché l’accensione e lo spegnimento).

Procedimento

Come spiegato nell’incipit, è necessario essere in possesso di:

  • un’istanza Homebridge funzionante (in esecuzione su Windows, macOS, Raspberry Pi: non fa alcuna differenza)
  • un Broadlink RM Mini 3 (o Broadlink equivalente con emissione di infrarossi)
  • una striscia LED controllabile tramite telecomando infrarossi (per esempio questa)

Il concetto è semplice: se Homebridge viene visto da Apple iOS; se Homebridge può inviare infrarossi tramite il plugin “homebridge-broadlink-rm”, se la striscia LED è controllata tramite gli infrarossi del suo telecomando… allora posso domotizzarla in ambito Apple HomeKit – e quindi, volendo, comandarla con Siri e automatizzarla col resto della domotica.

Quel che faremo è quindi:

  • installare il plugin “homebridge-broadlink-rm”
  • catturare tutti i codici infrarossi erogati dal telecomando
  • configurare ill file di configurazione di Homebridge
  • testarne il funzionamento

Installare il plugin

Installare il plugin è come sempre facilissimo, il comando è davvero banale:

npm install -g homebridge-broadlink-rm

Per maggiori info sull’installazione c’è una scheda apposita su inDomus.
Una volta installato, è necessario provvedere alla configurazione di base del plugin.

Catturare i codici infrarossi del telecomando

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!

Una volta installato il plugin ed effettuata la configurazione di base su Homebridge, presso l’app “Casa” di Apple iOS apparirà uno switch denominatoLearnIR”. Ora, per acquisire i codici HEX infrarossi del nostro telecomando sarà necessario posizionarsi davanti al Broadlink con Homebridge in esecuzione (per praticità da riga di comando piuttosto che come servizio) e attivare tale pulsante.

A questo punto, il Broadlink si metterà in “ascolto” di eventuali codici HEX infrarossi e, una volta ricevuti, li visualizzeràa schermo sul terminale tramite Homebridge. Si prema dunque il tasto “LeanIR” sull’applicazione “Casa”, si punti il telecomando verso il Broadlink, si prema il tasto che si desidera acquisire e si osservi 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” – appare così:

2600460093951237123812381213121212131213111312381238123812121213121311131213121212381213111312131113121312121238121312381139113911391138123812000d050000

A questo punto, imparata la procedura, acquisire tutti i codici del piccolo telecomando relativi a colore, luminosità, accensionsione e spegnimento, avendo cura di tenerne traccia, magari su un foglio Excel.

Configurare ill file di configurazione di Homebridge

Ora è necessario creare una nuova voce presso il file di configurazione di Homebridge al fine di creare presso Apple HomeKit un nuovo accessorio di tipo “Luce”, nello specifico di una tipologia tale che permetta di controllare non solo l’intensità, ma anche il colore di emissione della luce.

È dunque necessario, nel file di configurazione, inserire tra gli accessori del blocco ” “platform”: “BroadlinkRM” ” un accessorio analogo a questo:

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

"data": {
  "on": "codice Hex per l'accesione...",
  "off": "codice Hex per lo spegnimento...",

  "brightness10": "codice HEX per diminuire la luminosità...",
  "brightness20": "codice HEX per diminuire la luminosità...",
  "brightness30": "codice HEX per diminuire la luminosità...",
  "brightness40": "codice HEX per diminuire la luminosità...",
  "brightness50": "codice HEX per diminuire la luminosità...",
  "brightness60": "codice HEX per aumentare la luminosità...",
  "brightness70": "codice HEX per aumentare la luminosità...",
  "brightness80": "codice HEX per aumentare la luminosità...",
  "brightness90": "codice HEX per aumentare la luminosità...",
  "brightness100": "codice HEX per aumentare la luminosità...",

  "hue0": "codice HEX relativo al colore...",
  "hue120": "codice HEX relativo al colore...",
  "hue230": "codice HEX relativo al colore...",
  "hue31": "codice HEX relativo al colore...",
  "hue14": "codice HEX relativo al colore...",
  "hue43": "codice HEX relativo al colore...",
  "hue63": "codice HEX relativo al colore...",
  "hue136": "codice HEX relativo al colore...",
  "hue161": "codice HEX relativo al colore...",
  "hue188": "codice HEX relativo al colore...",
  "hue210": "codice HEX relativo al colore...",
  "hue245": "codice HEX relativo al colore...",
  "hue260": "codice HEX relativo al colore...",
  "hue279": "codice HEX relativo al colore...",
  "hue300": "codice HEX relativo al colore..."
  }
}

La prima parte del blocco “datadefinisce i codici HEX per l’accensione e lo spegnimento, non c’è molto altro da spiegare.
Le voci “BrightnessXX” indicano i 10 codici per le 10 percentuali di luminosità selezionabili tramite lo slider disponibile nell’accessorio presso l’applicazione “Casa”. Dato che il telecomando non prevede 10 codici diversi per la luminosità (ma solo un + e un -), imposteremo per le percentuali dal 10% al 50% il codice HEX per ridurre la luminosità, dal 60% al 100% quello per aumentarla.
Questa configurazione si traduce in un comportamento per il quale quando muoviamo lo slider tra valori “bassi”, il Broadlink manda codici per ridurre; viceversa quando lo muoviamo tra quelli “alti”, invia i codici per aumentare.

Apple HomeKit Light Brightness Trick

Per ora disinteressiamoci della sezione di configurazione “hueXXX, salviamo e diamo in pasto a Homebridge. Dovrebbe dunque apparire un accessorio di tipo “Luce” di nome “HueTV” e, utilizzando, dovrebbe essere possibile accendere e spegnere la striscia LED, nonché regolarne l’intensità.

Se tutto funziona, completiamo la configurazione.

Ora, da capire c’è questo: nei dettagli dell’accessorio appena apparso presso Apple “Casa” esiste una rotellina tramite la quale selezionare il colore di emissione della luce. Ad ogni posizione corrisponde a un numero intero arbitrario da 0 a 300. Quando si seleziona sul telefono/tablet tale posizione/colore, sul log di Homebridge viene indicato qual è il codice colore selezionato, e quale tra i codici HEX inseriti in configurazione è più vicino come cifra a quello selezionato.

Apple HomeKit Hue Selection

Se per esempio in configurazione ho inserito il codice HEX per i codici colore 10 e 30 e sulla rotellina ho scelto il codice colore 14, Homebridge sceglierà il codice 10 da me indicato (per vicinanza numerica) e invierà, tramite Broadlink, quel codice HEX indicato in configurazione.

Quel che bisogna fare è – partendo dal numero complessivo di colori disponibili sul telecomando (nel caso dell’esempio ne abbiamo 15) – prima capire dove siano posizionati, sulla rotellina, e quindi su Homebridge, come “codici colore”, dopodiché inserire le accoppiate “codice colore / codice HEX”.

Si consiglia di partire con una configurazione di soli 3 colori (rosso, verde e blu) e procedere poi per passi successivi.
Ciò detto, queste strisce LED condividono spesso da produttore a produttore gli stessi codici HEX, quindi vi proponiamo “una soluzione di massima” che potrebbe funzionare così com’è, senza troppi sbattimenti:

{
"name": "HueTV",
"type": "light",
"host": "192.168.1.90",
"onDelay": 2.1,
"data": {
  "on": "2600480000012b951313121412131214121312141114111511391139113913371139133713381337113913371337131313121115131213131312121411141139123912381337133711000d05",
  "off": "2600580000012a95121412131214121312141213131311141238133712381337133713371337133713131238133713121214121411141313113912131214133712381337133712381300052800012a4b14000c6800012a4b13000d05",
  "brightness10": "2600480000012a961511111411151214111414121114111514361337133713371337123812381436121412131238141211151312111513121337133712141337133712381238123812000d05",
  "brightness20": "2600480000012a961511111411151214111414121114111514361337133713371337123812381436121412131238141211151312111513121337133712141337133712381238123812000d05",
  "brightness30": "2600480000012a961511111411151214111414121114111514361337133713371337123812381436121412131238141211151312111513121337133712141337133712381238123812000d05",
  "brightness40": "2600480000012a961511111411151214111414121114111514361337133713371337123812381436121412131238141211151312111513121337133712141337133712381238123812000d05",
  "brightness50": "2600480000012a961511111411151214111414121114111514361337133713371337123812381436121412131238141211151312111513121337133712141337133712381238123812000d05",
  "brightness60": "2600500000012a96141214111313131213131213121313131238143612381337143614361436143614371312133714121312121412131214131213371412133714361337133713371300052900012a4b14000d050000000000000000",
  "brightness70": "2600500000012a96141214111313131213131213121313131238143612381337143614361436143614371312133714121312121412131214131213371412133714361337133713371300052900012a4b14000d050000000000000000",
  "brightness80": "2600500000012a96141214111313131213131213121313131238143612381337143614361436143614371312133714121312121412131214131213371412133714361337133713371300052900012a4b14000d050000000000000000",
  "brightness90": "2600500000012a96141214111313131213131213121313131238143612381337143614361436143614371312133714121312121412131214131213371412133714361337133713371300052900012a4b14000d050000000000000000",
  "brightness100": "2600500000012a96141214111313131213131213121313131238143612381337143614361436143614371312133714121312121412131214131213371412133714361337133713371300052900012a4b14000d050000000000000000",
  "hue0": "2600500000012a96121312141213111511141115121312141139123812381238123812381238133812381213111513371114111512131115121311391436141211391337133712381100052b00012b4a13000d050000000000000000",
  "hue120": "2600500000012b9512141114111511141115111411151114113a113911391238143612381337143613131114131311391313111411151114113911391139121411391139113913371200052a00012c4914000d050000000000000000",
  "hue230": "2600500000012c94131311141115111411151312111513121139123914361337133712381337133713131139131212381313121413121214133713121238121412381238123812381200052a00012b4a12000d050000000000000000",
  "hue31": "2600500000012a96121311151213121412131214111511141139123813371338123812381238123812381214121311391337131312141114121412381238121312141139123812381200052900012a4b12000d050000000000000000",
  "hue14": "2600500000012a95121411141114111512131214121312141238123812381238123812381238123812381213133712141238121311151114121412381213123812141139123812381200052900012b4a12000d050000000000000000",
  "hue43": "260050000001299712131115131213131213131311141115113911391238133712381238133711391139131211151238133712131115111411151139113911141115113911391139130005290001294b11000d050000000000000000",
  "hue63": "2600500000012a9612131214121312141213121412131214123812381238123812381238123813371337131313121313133713121313131212141337133713371312123812381139130005290001294b12000d050000000000000000",
  "hue136": "2600480000012b951213121411141313121312141213121412381238123812381238123812381238121312141238123812131214121312141238123812131214123812381238113912000d05",
  "hue161": "2600580000012a95131313121313131213121412131213131337133713371337133713371337133713131312133713131337131213131312133713371313133713121337133713371300052900012a4a13000c6b00012a4a12000d05",
  "hue188": "2600500000012a95121412131214121312141213121412131238123812381238123812381238123812141213121412381238121312141213123812381238121412131238123812381200052a0001294b12000d050000000000000000",
  "hue210": "2600580000012a95131312141213121412131214121312141238123812381238123812381238123813131213131312141238121312141213123812381337133812131238123813371300052900012b4a12000c6c00012a4b12000d05",
  "hue245": "2600500000012996131214121312131313131312131214121337133713371337133713371337133713131336143614371312141213121313133614121313131213371436143614361400052800012c4814000d050000000000000000",
  "hue260": "2600500000012a95121312141213121412131214121312141238123812381238123812381238123812131337133812131238121412131213133712141213123813131238123812381200052900012b4a12000d050000000000000000",
  "hue279": "2600580000012a95121412131214121312131214121312141238123812381238123812381238123812141238121312381238121412131214123812131238121412131238123812381200052a00012a4b12000c6a00012a4b12000d05",
  "hue300": "2600580000012996121411141115111411151114111510151139123812381238123812381238123812141139111412141139121311151114113912141139123811141139123812381200052a0001294b12000c6c0001294b12000d05"
 }
}

Prima di dare in pasto qualsiasi file di configurazione a Homebridge, ricordatevi sempre di verificarne la correttezza sintattica presso JSONLint.

Utilizzo

A questo punto l’accessorio è pronto. Al di là dell’esser usato manualmente (come visto in fase di configurazione), esso può essere comandato da Siri in modo naturale, ad esempio “Accendi luce HUE TV“, oppure “Accendi luce rossa” o “Imposta la Luce Blu“.
Ovviamente, tale accessorio è utilizzabile anche nelle automazioni di Apple HomeKit, per esempio comandare di spegnere automaticamente una luce tradizionale quando si accende questa luce specifica, e viceversa; oppure accenderla/spegnerla automaticamente quando si accende/spegne la TV (se la TV è stata aggiunta a Homebridge come accessorio di qualche tipo – anche tramite infrarosso+Broadlink con tecniche analoghe a quelle descritte in questo progetto).

Post Scriptum
Tornando all’Abstract di testa, è giusto sapere che qualora si vogliano sincronizzare delle striscie LED alle immagini a video sulla TV, esiste per l’appunto un progetto Open Source per riprodurre l’effetto Ambilight chiamato “Lightberry“.

SOCIAL

Di questo articolo parliamo specificamente anche sul forum.


Homebridge Official LOGOATTENZIONE: ricorda che sul nostro community FORUM c'è una sezione ad hoc dedica a Homebridge, per qualsiasi dubbio, domanda, informazione nel merito specifico di queste componenti.