Ho cercato in internet se esiste un sistema opensource in grado di interagire con Apple IOS e ho trovato HomeBrigde. Installando su Linux nodejs e il programma npm è possibile avere a disposizione uno strumento altamente configurabile per costruire qualsiasi tipo di dispositivo.
HomeBridge è un ambiente aperto e la comunità di sviluppatori è molto attiva: sono disponibili moltissimo plug-ins per aprire il cancello, accendere la luce, controllare la TV.
L’installazione non è complicata bastano pochi passaggi. Nell’esempio ho ideato una funzione che accende è spegne il Line-IN di un PC a cui ho collegato una radio. Tramite SIRI del mio iPhone posso così accedere o spegnere la radio.
E’ possibile installarlo su un pc Linux (io uso come distribuzione Ubuntu) ma funziona nello stesso modo anche su un raspberry (distribuzione raspian).
Ambiente
Installare i seguenti pacchetti
$ sudo apt-get install nodejs $ sudo apt-get install libavahi-compat-libdnssd-dev
Installazione
$ sudo npm install -g homebridge --unsafe-perm homebridge homebridge-http $ sudo npm install -g --unsafe-perm homebridge-config-ui-x
chiudere e riaprire il terminale per rileggere l’ambiente.
Primo avvio
Lanciando il comando homebridge per la prima volta vengono create le directory di ambiente solitamente si trovano in $HOME/.homebridge
ATTENZIONE: non è ancora il momento di abbinare il cellulare!
$ homebridge
Premendo la sequenza di tasti CTRL + C si termina il programma
Entrando nella directory $HOME/.homebridge dobbiamo creare il nostro file di configurazione. Potete trovare il file di esempio qui sotto
File di configurazione
cd $HOME/.homebridge
$ vi config.json
Potete usare il file di configurazione che trovare qui sotto cambiando il codice PIN con uno vostro personale
{ "bridge": { "name": "Casa mia", "username": "CC:25:AD:E3:CE:33", "port": 51827, "pin": "036-95-412" }, "description": "Domotica della casa.", "accessories": [ { "accessory": "Http", "name": "stereo", "switchHandling": "realtime", "http_method": "GET", "on_url": "http://192.168.1.100/radio/?Radio=on", "off_url": "http://192.168.1.100/radio/?Radio=off", "status_url": "http://192.168.1.100/radio/?Radio=status", "status_on": "ON", "status_off": "OFF", "username" : "", "password" : "" } ], "platforms": [ { "platform": "config", "name": "Config", "port": 4000, "sudo": false } ] }
L’esecutore dei comandi
Come ho anticipato il programma effettua una GET al web server che ha indirizzo IP 192.168.1.100. Il web server ha una scheda audio e ho collegato una radio alla porta LINE-IN. L’esempio di codice che riporto attiva o disattiva la porta LINE-IN.
<?php /* Il file crea e imposta al suo interno lo stato della porta audio LineIN lo stato può essere on oppure off lo script /root/shell/loquendo_allarmi.sh interpreta correttamente il file in modo da non cambiare lo stato della porta Questo php e' utilizzato da homekit per accendere e spegnere la radio con il comando "accendi/spegni stereo" */ $FILE = "/tmp/audio.stato"; $Radio = LeggiVar("Radio"); // assume valori on|off switch ($Radio) { case "on": exec("amixer sset "Line" on > /dev/null"); $fh = fopen ( $FILE ,"w+"); fwrite ($fh , $Radio ); fclose ($fh); break; case "off": exec("amixer sset "Line" off > /dev/null"); $fh = fopen ( $FILE ,"w+"); fwrite ($fh , $Radio ); fclose ($fh); break; case "status": $fh = fopen ( $FILE ,"rb"); $buffer = fgets($fh, 4096); switch ($buffer){ case "off": echo ("0"); break; case "on": echo("1"); break; } fclose ($fh); break; default: echo("Parametro errato"); break; } // end switch //---------------------------------------------------------- function LeggiVar($NomeVariabile){ unset($OUT); if (isset($_POST[$NomeVariabile])) $OUT = $_POST[$NomeVariabile]; if (isset($_GET[$NomeVariabile])) $OUT = $_GET[$NomeVariabile]; return (isset($OUT)?$OUT:null); } ?>
Un altro esempio di attuatore usando un ESP8266 lo troverete presto su questo sito.
In caso di problemi
In caso di problemi di compatilibilità io sono riuscito a risolvere disinstallando e reinstallando in questo modo:
$ sudo npm uninstall homebridge $ sudo /bin/rm -r /usr/lib/node_modules/homebridge/ /usr/lib/node_modules/homebridge-http/ $ sudo rm /usr/bin/homebridge /usr/bin/homebridge-config-ui-x
A questo punto eseguire l’installazione come indicato sopra
Messaggi di errore
Se dopo aver scansionato il codice QR nell’applicaizone Casa non appare il dispositivo ma appare il messaggio
Per aggiungere questo accessorio alla tua abitazione devi prima inizializzarlo
Occorre cancellare la directory persist che si trova in $HOME/.homebridge
Riavviare homebridge e tentare nuovamente l’assegnazione del dispositivo.
Piattaforma WEB di gestione
Per attivare la piattaforma di gestione web occorre modificare il file di configurazione (vedi la sezione platform del file di configurazione che ho riportato). Per non avere noie con eventuali webserver ho usato la porta TCP 4000. Dopo il riavvio di homebridge è possibile accedere all’interfaccia mediante browser all’indirizzo http://[ip_vostro_server]:4000
Utente predefinito : admin
password predefinita: vuota
Il file con username e password si trova in $HOME/.homebridge/auth.json Consiglio di tener via una copia di questo file prima del cambio della password (non si sa mai che la si possa dimenticare).
Da questa interfaccia è anche possibile attivare i dispositivi anziché usare il comando vocale però occorre attivare Homebridge in modalità “insicura” com il comando
$ homebridge -I
SalvaSalva
SalvaSalva
SalvaSalva
SalvaSalva
SalvaSalva