HomeBridge: come rendere compatibili i dispositivi iOS con Homekit (Raspberry & IFTTT)

Oggi vediamo come rendere compatibili tanti dispositivi con iOS grazie a HomeBridge. Faremo uso di un Raspberry come gateway e di HomeBridge. L’obiettivo è di rendere più semplice l’integrazione di alcuni dispositivi IoT nell’ecosistema iOS grazie a tecnologie open-source gratuite.

Nonostante, infatti, l’industria IoT (internet of things: dispositivi smart controllabili tramite internet) stia crescendo rapidamente, nel mercato continuano a mancare degli standard comuni. Con due ecosistemi che faticano a collaborare (Apple & Google), gli utenti devono spesso utilizzare diversi software e app per gestire le diverse tecnologie domestiche; e non solo: basti pensare che apparati come Nest richiedono un abbonamento aggiuntivo. Questa industria deve ancora crescere molto prima di essere realmente a favore dell’utente finale, nel frattempo, smanettiamo!

1. Scaricare e Installare Raspbian

Per installare Raspbian (il sistema operativo creato ad HOC per il Raspberry) dovremo dotarci di:

  • Raspberry
  • tastiera
  • mouse
  • microSD (personalmente ne ho usata una da 32GB ma dovrebbe andar bene anche una da 8)
  • cavo microUSB e presa da muro USB
  • PC

Per quanto riguarda il software bisognerà collegarsi alla pagina di download di Raspbian e scegliere la versione. Personalmente vi consiglio di scaricare quella NOOBS, anche senza interfaccia grafica. Per le operazioni che ci interessano, verrà tutto eseguito da terminale e non avremo necessità di utilizzarlo una volta configurato.

Scaricato il SO non dovremo fare altro che estrarre il file RAR e copiarne il contenuto direttamente nella microSD che andremo ad inserire nel Raspberry.

Copiato il contenuto bisogna estrarre la microSD dal computer ed inserirla nel Raspberry. Colleghiamo il Raspberry ad un monitor, colleghiamoci mouse e tastiera ed il cavo ethernet (non necessario se il Raspberry è il Pi3).

Nella schermata d’installazione verranno mostrati diversi sistemi operativi disponibili, come già  detto vi consiglio Raspbian Lite (cioè la versione minimale senza interfaccia grafica). Cambiamo la lingua in basso e quella della tastiera. Attendiamo l’installazione termini e che su schermo ci venga mostrato il terminale.

Ci troveremo di fronte ad una schermata simile. Quello che vediamo è  il terminale del nostro Raspberry, iniziamo dando la possibilità di collegarci al nostro dispositivo tramite SSH. Come fare? Dobbiamo dare il comando di accesso alle impostazioni.

sudo raspi-config

Scriviamo il comando in alto e diamo invio. Attraverso questo comando accediamo alle impostazioni del sistema, abilitando l’accesso al Raspberry con SSH potremo anche utilizzare in futuro il dispositivo senza dover utilizzare un monitor.

Queste saranno le impostazioni che potremo modificare, eventualmente diamo pure uno sguardo e se ci sentiamo abbastanza sicuri modifichiamo pure le impostazioni che più ci interessano. In questa fase il percorso da seguire sarà: Interfacing Options – SSH

Abilitiamo l’SSH ed usciamo dal menu. Siamo quindi pronti a poter installare HomeBridge sul nostro Raspberry.

2. Installare HomeBridge su Raspberry

Fortunatamente l’installazione di HomeBridge non richiede particolari doti, bisognerà solo incollare uno alla volta i comandi per il terminale.

Prima di installare HomeBridge però dovremo fare due operazioni, aggiornare Raspbian e installare Node.js; noi installeremo la versione 8 anche se ci sono versioni più recenti. Questo perché al momento risulta la versione più stabile da usare. I comandi da dare saranno quindi:

sudo apt-get update
sudo apt-get upgrade

I primi due serviranno per aggiornare Raspbian e questo sotto per installare Node.js

curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -

Finalmente potremo installare HomeBridge, diamo il comando:

sudo npm install -g homebridge --unsafe-perm

Una volta terminato diamo il comando

Homebridge

Non badate all’eventuale errore, è del tutto normale. Questo tipo di operazione al momento ci servirà per creare la cartella.

Terminato ciò bisognerà creare un file di configurazione per HomeBridge. Per farlo diamo il comando:

sudo nano /home/pi/.homebridge/config.json

Si aprirà una schermata di inserimento testo, per facilità d’utilizzo fate copia incolla del nostro qui sotto:

{
	"bridge": {
		"name": "Techboom",
		"username": "CC:22:3D:E3:CE:30",
		"port": 51935,
		"pin": "023-45-168"
	},
	"description": "",
	"accessories": [],
	"platforms": [
		{
			"platform": "IFTTT",
			"name": "IFTTT",
			"makerkey": "Inserire MakerKey",
			"accessories": [{
				"name": "Nome dispositivo",
				"buttons": [{
					"caption": "Nome dispositivo",
					"triggerOn": "comando accensione",
					"triggerOff": "comando spegnimento"
				},
			{
					"caption": "Nome dispositivo",
					"triggerOn": "comando accensione",
					"triggerOff": "comando spegnimento"
				},
			{
					"caption": "Nome dispositivo",
					"triggerOn": "comando accensione",
					"triggerOff": "comando spegnimento"
				}]
			}]
		}
	]
}

Bisognerà incollare il file testo qui sopra e successivamente premere Ctrl+X per uscire e poi premere il tasto Y per confermare il salvataggio.

Per la nostra configurazione e per l’eseguire i comandi ci avvarremo del noto servizio IFTTT. Questo perché  da modo di collegarsi ad un’infinità di servizi in maniera semplice e veloce. Installiamo quindi il plugin di IFTTT con il comando:

sudo npm install -g homebridge-ifttt

Una volta installato il plugin richiamiamo il servizio di Homebridge e ridiamo il comando dato precedentemente:

Homebridge

Questa volta non dovremmo ricevere alcun errore. Dovreste trovarvi sotto una schermata simile alla mia, per  il momento mettiamo da parte il QR Code, ci servirà tra poco.

Ora però bisognerà fare in modo che il nostro Raspberry comunichi con IFTTT per inviare il comando ai nostri dispositivi.

3. Collegare IFTTT ad Homebridge

Su internet ci sono centinaia di plugin che si interfacciano con HomeBridge. Dopo aver perso la testa per giorni a configurarli e provarli, ho capito che forse il metodo più semplice e pulito è utilizzare IFTTT. Utilizzo questo tipo di approccio anche per comandare dispositivi che hanno un proprio plugin. Le conosciutissime lampadine Yeelight, ad esempio, hanno il proprio plugin ma una volta installato ho notato crea errori e non fa funzionare più correttamente HomeBridge ed i plugin installati.

Per collegare IFTTT con HomeBridge bisognerà utilizzare Webhooks. Apriamo quindi IFTTT su smartphone o su browser, andiamo su servizi e cerchiamo Webhooks.

Colleghiamo il servizio, in questo modo ci verrà creato un indirizzo personale (da non condividere).

Entrando nelle impostazioni del servizio sarà possibile prendere il link al nostro profilo  IFTTT per collegare ulteriori servizi.

Quella che vedrete sopra è la schermata del servizio Webhooks. Sarà qualcosa del tipo:

https://maker.ifttt.com/use/VostroMakerKey

Dove io ho scritto VostroMakerKey ci sarà appunto un codice che dovrete copiare, andrà poi incollato nel file config.json che abbiamo creato prima.

Quindi teniamo sotto mano il MakerKey di IFTTT e su raspberry diamo il comando:

sudo nano /home/pi/.homebridge/config.json

Si aprirà quindi nuovamente la schermata di configurazione del servizio HomeBridge, dovremo inserire alcuni dettagli che prima non avevamo:

{
	"bridge": {
		"name": "Techboom",
		"username": "CC:22:3D:E3:CE:30",
		"port": 51935,
		"pin": "023-45-168"
	},
	"description": "",
	"accessories": [],
	"platforms": [
		{
			"platform": "IFTTT",
			"name": "IFTTT",
			"makerkey": "Inserire MakerKey",
			"accessories": [{
				"name": "Nome dispositivo",
				"buttons": [{
					"caption": "Nome dispositivo",
					"triggerOn": "comando accensione",
					"triggerOff": "comando spegnimento"
				},
			{
					"caption": "Nome dispositivo",
					"triggerOn": "comando accensione",
					"triggerOff": "comando spegnimento"
				},
			{
					"caption": "Nome dispositivo",
					"triggerOn": "comando accensione",
					"triggerOff": "comando spegnimento"
				}]
			}]
		}
	]
}

Prestiamo quindi attenzione, in “Inserire MakerKey” incolliamo il nostro ccodice di IFTTT preso nel passaggio precedente (inserirlo tra parentesi senza cancellarle). In nome dispositivo e caption diamo il nome che vogliamo dare al nostro dispositivo, in triggerOn e trigger Off invece scegliamo una parola  da associare all’accensione e allo spegnimento del dispositivo.

Se dovessimo decidere di accendere una luce della cucina potremo ad esempio fare questa configurazione:

{
	"bridge": {
		"name": "Techboom",
		"username": "CC:22:3D:E3:CE:30",
		"port": 51935,
		"pin": "023-45-168"
	},
	"description": "",
	"accessories": [],
	"platforms": [
		{
			"platform": "IFTTT",
			"name": "IFTTT",
			"makerkey": "Fate attenzione a maiuscole del MakerKey",
			"accessories": [{
				"name": "Luci Cucina",
				"buttons": [{
					"caption": "Luci Cucina",
					"triggerOn": "cucinaON",
					"triggerOff": "cucinaOFF"
				},

Nel mio caso come triggerOn e triggerOFF ho scelto “cucinaON” e “cucinaOFF”, badate bene a come io abbia messo le maiuscole a ON e a OFF, questi andranno impostati uguali su Webhooks.

Una volta terminata la configurazione su Homebridge ci spostiamo su IFTTT per configurare i servizi. Apriamo nuovamente IFTTT e creiamo un nuovo applet.

Premiamo su + per la creazione dell’applet, ovviamente come trigger di entrata dovremo selezionare Webhooks.

Selezioniamo “Recive a web request” poichè questo è l’unico modo perché si attivi il servizio.

In Event Name dovremo inserire il Trigger che abbiamo inventato prima, nel nostro caso di esempio abbiamo dato “cucinaON”, badate bene a maiuscole e minuscole perché devono essere uguali a quelle del file config.Json che abbiamo creato prima. Premiamo su Create trigger e andiamo al passaggio successivo.

Ora dovremo scegliere l’evento che viene scatenato da Webhooks, nel mio caso come “That” ho deciso di accendere le luci del Sonoff, scelgo quindi il servizio eWeLink Smart Home.

Se avete seguito la guida dell’installazione del Sonoff ed avete quindi un Sonoff Basics, dovete scegliere il servizio indicato dalla freccia, “Turn 1 Channel Switch on or off”.

Scegliamo il nostro Sonoff (ovviamente a patto di aver già configurato il servizio con IFTTT, se non lo avessimo fatto basterà inserire le credenziale create alla creazione dell’account di Sonoff) e selezioniamo che dovrà accendersi (o spegnersi se vogliamo che si spenga). Premiamo su “Create action”.

Salviamo il tutto e premiamo su Finish. Il servizio sarà correttamente configurato e in funzione. Dovremo ripetere lo stesso tipo di passaggio per fare in modo che si spenga e così anche per ulteriori accessori che vorremo aggiungere.

4. Aggiungere HomeBridge ad HomeKit su iPhone

Abbiamo ormai quasi terminato e non ci resta che aggiungere il servizio su iPhone. Ricordate il QR Code di prima? Ora ci servirà. Nel caso non abbiamo più davanti il QR su raspberry diamo il comando:

Homebridge

Comparirà nuovamente il QR code, e verranno caricato i servizi che abbiamo inserito nel nostro file di config.Json.

Su iPhone apriamo l’app “Casa”

Selezioniamo “Aggiungi accessorio” e inquadriamo il QR code.

Homebridge

Ci verrà comunicato che l’accessorio non è certificato, non vi preoccupate non c’è nulla di strano in questo messaggio. Scegliamo “aggiungi comunque”.

A questo punto, oltre farci configurare il bridge, ci farà configurare anche tutti i dispositivi che abbiamo inserito con il metodo del passaggio precedente. Potremo inserirli nelle stanze già disponibili o crearne di nuove e selezionare un eventuale icona identificativa diversa.

Al termine dovreste avere su iPhone una schermata simile a questa sotto.

La cosa che potrebbe sembrarvi inizialmente un po’ strana e che se doveste accendere manualmente (quindi premendo sull’interruttore o attraverso altre app) le luci che avete inserito nella app casa, le troverete spente in app Casa su iPhone. Questo perché il sistema non verrà aggiornato dell’azione manuale. Bisognerà semplicemente premere sul tasto per inviare il segnale di accensione e poi di nuovo per spegnerlo (quindi premete due volte sullo stesso dispositivo). Piccola nota, se invece dovessimo chiedere a Siri di spegnere la luce o accendere la luce il comando verrà eseguito senza dover fare altri passaggi.

La cosa veramente interessante, infatti, è la possibilità di utilizzare Siri per accendere e spegnere le luci ed i dispositivi collegati. Sia se premiamo il tasto dalla app casa su iPhone, sia se chiediamo a Siri di accendere o spegnere la luce, attendiamo che il comando venga completato. Ho notato che in alcuni casi il comando viene eseguito nel giro di pochi secondi in altri possono passarne anche 10. Questo purtroppo avviene per la velocità di IFTTT di collegarsi al servizio e dare il comando.

Riepilogo e Lista prodotti necessari

Abbiamo quindi configurato il nostro Raspberry, installato il servizio Homebridge e configurato il plugin IFTTT. Abbiamo collegato il nostro Raspberry quindi a Webhooks e ad un Sonoff per l’esecuzione del comando. Spero sia andato tutto liscio e che non ci siano stati intoppi, per domande o informazioni utilizzate pure il box dei commenti in basso.

Qui sotto, invece, potete trovare la lista dei prodotti che potreste acquistare per seguire i nostri passaggi:

Sonoff Basic R2
Sonoff Smart WiFi
Smart WiFI Switch
Raspberry Pi 3 - Starter Kit
Raspberry Pi 3 Mod. B (plus)
Scheda Madre Raspberry PI 3
Samsung MicroSD Evo (256 GB)
Scheda Micro SD 64GB 8GB 16GB 32GB

21 Commenti

  1. Ciao, grazie per l’ottima guida, sono riuscito a far funzionare tutto.

    Ho solo un piccolo problema e, se usi anche tu accessori Broadlink, ti chiedo se hai provato a collegare tramite IFTTT il tuo account Broadlink, a me da errore con account inesistente.
    Ho paura che l’account creato con IHC for EU non “chiacchieri” con IFTTT di Broadlink che, forse, vuole un account creato con l’APP americana..
    Puoi verificare?
    Grazie in anticipo

  2. Ciao, ti scrivo per dirti che, da oggi, IHC for EU (broadlink) è disponibile con IFTTT.
    Vole anche chiederti una cosa su IFTTT per HomeBridge:
    Se metto un solo “name” sotto “accessories”, tutto funziona, ma non posso spostare singoli accessori in stanze diverse su app Casa in quanto mi sposta tutti gli accessori assieme.
    Se metto più voci “name” sotto “accessories” (ovviamente nel platform IFTTT), nell’app Casa mi vede solo gli accessori compresi nell’ultima voce “name”, quelli nelle precedenti vengono ignorati.
    Non riesco a risolvere questo problema…. su GitHub ho visto che si possono mettere più voci “name” ma non spiega nulla.
    Sai aiutarmi?
    Grazie mille in anticipo

  3. Ciao, sono alle mie prime esperienze di domotica e mi sono aimè scontrato con le difficoltà di comunicazione dei diversi sistemi. mi sto preparando per provare a seguire la tua guida, ma ho un dubbio, probabilmente banale, e mi scuso fin da subito, ma il Rasberry, deve rimanere sempre acceso o serve solo per creare il collegamento e poi si può spegnere?
    Se lo devo lasciare acceso, mi tocca trovargli un posto sicuro e funzionale, non volante come lo uso ora per gioco.
    Grazie

    • Ciao Ivan! Purtroppo il dispositivo deve essere sempre connesso. Attualmente quali sono le tue necessità? Cosa vuoi comandare e con che cosa?

  4. Scusami la domanda un po’ ignorante, ma quindi qualsiasi dispositivo compatibile con ifttt si può aggiungere anche ad Homebridge e quindi a Homekit? Grazie in anticipo

    • Sì, sono tutti compatibili basta semplicemente cambiare il THAT finale col servizio che ti occorre. Se vuoi un consiglio puoi dirci cosa vuoi fare e ti aiutiamo noi

      • Vorrei per esempio comprare un pezzo aggiuntivo da collegare alla mia striscia led, che è compatibile con Alexa, IFTTT, app su smartphone e Google home. Si vendono e costano poco e mi permettono di spegnere e accendere per esempio con Alexa o cambiare colore, o comandarle con IFTTT. Però se si potesse connetterle anche a HomeKit come ho già fatto con le yeelight sarebbe molto comodo anche averle su Home di Apple e con Siri!!!

        • Se ci dici il modello posso controllare in maniera più precisa. Ad ogni modo se vuoi utilizzare solo Siri puoi seguire questa guida:
          https://techboom.net/collegare-ifttt-a-siri-attraverso-comandi-guida/
          Se invece vuoi che sia disponibile anche disponibile nella app casa. Segui questa guida e quando arrivi alla parte che devi scegliere il servizio da azionare (nel nostro caso abbiamo scelto ewelink tu cerca il tuo) lo selezioni in base alla tua esigenza e continui tutto in maniera identica.

          • Il modello è il DC12 28V mini wifi rgb. Se riesci a farmi sapere il prima possibile te ne sarei molto grato.

          • Andrea scusa il ritardo ma verificavo chi potesse avere il dispositivo da te elencato. Non sono riuscito a reperirlo quindi non ti saprei dire. Se hai modo di configurarlo e darci feedback te ne saremo grati.

  5. Ottimo.
    Funziona che è una meraviglia.
    Ma credo mi manchi ancora un passaggio.
    Tutto funziona in modo anche rapido se il cellulare si trova sotto la rete wifi di casa ma se mi trovo fuori non riesco a controllare nulla in remoto.
    Cosa devo settare ?

  6. Ciao, una domanda: questo tutorial va a toccare il dispositivo in qualche modo? Cioè, se io ho a casa Google Home Mini, mentre sul cellulare ho iOS e quindi HomeKit, posso controllare poi i Sonoff sia con Google Assistant che con Siri?

    • ciao Luca, scusa il ritardo. Ad ogni modo non preoccuparti poiché non si va a perdere la compatibilità con altri servizi o dispositivi.

  7. buongiorno Salve , io ho configurato tutto come nella guida, quando vado sull app CASA dell iphone e seleziono la luce da spegnere o accendere tramite apparato sonoff basic , vedo che dal homebridge arriva il comando ma poi la luce non si riesce ne a spegnere ne ad accendere , dal app propietaria EWelink funziona , nell app IFTTT ho inserito l account EWelink e infatti quando creo l applet trova il mio dispositivo ma poi non lo riesce pilotare !! sono sotto wifi nella stessa rete lan e come ripeto dall EWelink funziona e l homebridge riceve questo

    [2019-3-18 15:00:08] Homebridge is running on port 51826.
    [2019-3-18 15:44:26] [IFTTT] Luci lampada Studio sent command lamStudioON
    [2019-3-18 15:44:26] [IFTTT] https://maker.ifttt.com/trigger/lamStudioON/with/key/jmVarRZRLihxtH4Q6DIt-aT8XXXXXXXXXXXX
    [2019-3-18 15:44:28] [IFTTT] Luci lampada Studio sent command lamStudioOFF
    [2019-3-18 15:44:28] [IFTTT] https://maker.ifttt.com/trigger/lamStudioOFF/with/key/jmVarRZRLihxtH4Q6DIt-aT8XXXXXXXXXXXX
    ma non si spegne o accende ho sbagliato qualcosa nel json?

    pi@raspberrypi:~/.homebridge $ cat /home/pi/.homebridge/config.json
    {
    “bridge”: {
    “name”: “inDomus”,
    “username”: “XXXXXXXXXXXXX”,
    “port”: 51826,
    “pin”: “XXXXXXXX”
    },

    “description”: “”,
    “accessories”: [],
    “platforms”: [
    {
    “platform”: “IFTTT”,
    “name”: “IFTTT”,
    “makerkey”: “jmVarRZRLihxtH4Q6DIt-aT8XXXXXXXXXXX”,
    “accessories”: [{
    “name”: “Luci lampada Studio”,
    “buttons”: [{
    “caption”: “Luci lampada Studio”,
    “triggerOn”: “lamStudioON”,
    “triggerOff”: “lamStudioOFF”
    }]
    }]
    }
    ]
    }

  8. Salve, ho un piccolo problema, sono riuscito a far funzionare il tutto con un sonoff dual channel, tutto ha funzionato in maniera semplice, cosi ho deciso di aggiungere un altro sonoff basic, ho creato le applet su iftt, ho aggiunto al config, ma non c’è modo di vederlo all’interno dell’app casa, ho probato anche ad eliminare l’homebridge dall’app e reinserirlo, ma nulla, la cosa più strana è che se anche con il file config vuoto homebridge continua a funzionare con il sonoff dual channel…in sostanza è come se non vedesse le modifiche al file config. Qualcuno può darmi una mano??

  9. Ciao scusa io ho fatto tutto adesso sorge un problema vorrei poter comandare le luci da fuori casa … non sotto rete Wi-Fi… come posso fare ?

  10. Ciao , un bellissimo tutorial grazie al quale possiamo ampliare le nostre nozioni di demotica . Vorrei dirti questo: ho installato rasbian e in seguito Home Assistant . Dentro home assistant c’è già Homebridge ma non riesco a collegarlo con HomeKit (casa di Apple) . Mi consigli di eseguire la tua procedura in modo da ottenere il codice a barre e il codice numerico per aggiungerlo a Casa o puoi dirmi se esiste una procedura diversa per ottenere il codice numerico per HomeKit visto che io ho già Homebridge?

LASCIA UN COMMENTO

Per favore inserisci il tuo commento!
Per favore inserisci il tuo nome qui