Homekit Italia Group
  • Home

  • Indice del forum!
 #810  da Musicista77
 21/07/2019, 17:20
Premessa
Qualche settimana fa, mi arrivava il nuovo IPad, e decido di utilizzarlo come hub domestico, passando finalmente alla demotica basata su Homekit.
L’unica cosa che mi frenava parecchio, era la mia innata pigrizia: un tarlo nel cervello, infatti, mi impediva fisicamente di aprire tutte le cassette dell’impianto elettrico per procedere allo smontaggio, al flash ed al rimontaggio di tutti i dispositivi demotici installati (soprattutto gli Shelly 2.5 appena appena montati per le tapparelle).
Siccome avevo un Raspberry PI che mi girava per casa (comprato tempo fa per installarci Home Assistent, ma mai utilizzato per davvero), la conseguenza naturale è stata quella di utilizzarlo con HomeBridge.
Ero completamente a digiuno di Raspbian, Linux e compagnia bella. Ma tentar non nuoce, e quindi mi sono messo a girare in rete ed ho trovato numerose guide che mi hanno aiutato ad installare e configurare correttamente il tutto.
L’unico “difetto” dell’installazione tipica di Homebridge, risiede nel fatto che va avviato con un comando manuale, e quindi se il “Raspy” si riavvia per qualsiasi motivo mentre si è fuori casa, la demotica resta bloccata.
Mi sono chiesto allora: “Ma davvero non esiste un metodo per avviare Homebridge assieme al sistema operativo? Non ci credo”. E infatti dopo varie ricerche e prove (vi ricordo che sono a digiuno di Linux e derivati, quindi perdonatemi a prescindere), ho trovato un metodo per far avviare Homebridge come servizio di sistema.
La parte “divertente” è venuta poi fuori lavorandoci: il sistema ad un certo punto implica una copia dei propri file di configurazione in una cartella di sistema (ci arriveremo dopo nel dettagli). Quindi, come vedremo, alla fine di tutto ci ritroveremo con due installazioni identiche di Homebridge: una di sistema con avvio automatico (quella che chiameremo “di produzione”, e che farà realmente lavorare la nostra demotica), ed una di test, con avvio manuale, che potremo andare ad utilizzare come “laboratorio prova”, e su cui andremo a fare tutte le prove ed i test necessari, prima di caricare la configurazione finale sull’altra. Così facendo avremo sempre una configurazione funzionante che non andremo a “corrompere” con inevitabili (almeno per me) errori di sintassi del file config.json.
Allora, cominciamo.

Installiamo Homebridge
Tutto ciò di cui parleremo in questa guida, è stato testato unicamente su Homebridge installato su Raspberry PI 3b+ con sistema operativo Raspbian. Non mi dilungherò sull’installazione di Homebridge, che daremo per scontata.
Se non avete Homebridge installato, trovate numerose guide in rete, tra cui vi segnalo quella che trovate su questo forum, redatta dall’ottimo Gianluca Piergentili.

Configurare Homebridge come servizio
Logghiamoci al nostro Raspberry tramite ssh (via terminale su MAC o tramite Putty su Win). Se abbiamo lanciato precedentemente Hombridge, fermiamone l’esecuzione tramite control/command+X, tornando così al prompt dei comandi.
Iniziamo col creare le opzioni di default per il futuro servizio. Diamo il seguente comando:
Codice: Seleziona tutto
sudo nano /etc/default/homebridge
e copiamo, dentro l’editor che apparirà, il seguente testo:
Codice: Seleziona tutto
# Defaults / Configuration options for homebridge
# The following settings tells homebridge where to find the config.json file and where to persist the data (i.e. pairing and others)
HOMEBRIDGE_OPTS=-U /var/homebridge

# If you uncomment the following line, homebridge will log more 
# You can display this via systemd's journalctl: journalctl -f -u homebridge
# DEBUG=*
Dopodiché, salviamo ed usciamo dall’editor con cntr+X, yes, invio.

Eseguiamo poi il seguente comando
Codice: Seleziona tutto
sudo nano /etc/systemd/system/homebridge.service
e copiamo, dentro l’editor, il seguente testo:
Codice: Seleziona tutto
[Unit]
Description=Node.js HomeKit Server 
After=syslog.target network-online.target

[Service]
Type=simple
User=homebridge
EnvironmentFile=/etc/default/homebridge
ExecStart=/usr/local/bin/homebridge $HOMEBRIDGE_OPTS
Restart=on-failure
RestartSec=10
KillMode=process

[Install]
WantedBy=multi-user.target
ATTENZIONE: il percorso ExecStart è relativo al path di installazione del vostro Homebridge, il quale può essere verificato tramite il comando:
Codice: Seleziona tutto
which homebridge
Corretto eventualmente l’ExecStart, salviamo e usciamo dall’editor come in precedenza.
Ora creeremo l’utente per l’esecuzione del servizio, che chiameremo “homebridge” (si, lo so, ho una fantasia innata…):
Codice: Seleziona tutto
sudo useradd --system homebridge
Quindi andremo a creare la cartella home ed a copiarvi dentro l’attuale configurazione, ovvero quella che il vostro iPhone e/o iPad ha “imparato” durante l’abbinamento. Questo ci consentirà di non dover rifare nuovamente automazioni, spostare i dispositivi nelle stanze ecc… I comandi, da utilizzare uno alla volta, sono i seguenti:
Codice: Seleziona tutto
sudo mkdir /var/homebridge
sudo cp ~/.homebridge/config.json /var/homebridge/
Occorrerà a questo punto, sistemare i permessi:
Codice: Seleziona tutto
sudo chmod -R 0777 /var/homebridge
A questo punto, saremo pronti per abilitare il servizio e avviarlo. I comandi da utilizzare sono i seguenti, da lanciare anche questi uno alla volta:
Codice: Seleziona tutto
sudo systemctl daemon-reload
sudo systemctl enable homebridge
sudo systemctl start homebridge
Il BRIDGE è ora funzionante e in esecuzione automatica.
Per verificarlo è sufficiente aprire l’app “Casa” e verificare che l’icona del BRIDGE non riporti la dicitura “non disponibile”.
In ogni caso, per essere certi del corretto funzionamento, è possibile verificare lo stato del servizio tramite il comando:
Codice: Seleziona tutto
sudo systemctl status homebridge
Se riceviamo una risposta del tipo:
Codice: Seleziona tutto
[color=#00BF00]Active: active (running)[/color]
vuol dire che il servizio è in normale esecuzione. In caso contrario provare a riavviare il sistema, tramite un
Codice: Seleziona tutto
sudo reboot

Consigli operativi
La configurazione descritta in questa guida, come già detto, presenta un vantaggio operativo importante: così configurato, Homebridge viene eseguito come servizio automatico a partire dalla cartella /var/homebridge, oppure come applicativo lanciato manualmente da /home/pi/homebridge (oppure ~/.homebridge) – previo stop dell’istanza eseguita automaticamente all’avvio.
Come accennato in premessa, così configurato, Homebridge presenta due file di configurazione (entrambi nominati config.json) nei due rispettivi percorsi sopra elencati: il primo, per l’esecuzione automatica, il secondo per quella manuale.
A seguito quindi della necessità di variare la configurazione di Homebridge (aggiunta e/o modifica di un plugin e/o di un accessorio), dovremo andare ad eseguire la seguente mini procedura:
  • fermare l’istanza automatica di Homebridge (quella “di produzione”), mediante il comando
Codice: Seleziona tutto
sudo systemctl stop homebridge
  • modificare la configurazione di quella manuale (o di test)
Codice: Seleziona tutto
sudo nano /home/pi/homebridge/config.json
  • eseguire quella manuale, verificando se tutto funziona correttamente secondo quelle che sono le proprie necessità
Codice: Seleziona tutto
homebridge
(successivamente fermare Homebridge con ctrl/command+x). In questa fase, abbiamo anche la possibilità di seguire a monitor l’attività del bridge, verificando in tempo reale se ci siano problemi o errori di sintassi nel file config.json, cosa che non avviene con l’istanza automatica all’avvio.

  • copiare la configurazione dell’istanza manuale sopra quella automatica, e sistemare i permessi. Per fare ciò, dare i comandi seguenti uno alla volta:
Codice: Seleziona tutto
sudo cp ~/.homebridge/config.json /var/homebridge/
sudo cp -r ~/.homebridge/persist /var/homebridge
sudo chmod -R 0777 /var/homebridge

  • riavviare l’istanza automatica.
Codice: Seleziona tutto
sudo systemctl daemon-reload
sudo systemctl start homebridge

A questo punto rilanciamo l’applicazione “Casa” su IPhone e/o IPad per verificare che il BRIDGE risponda in modo corretto. Se così non fosse, proviamo a riavviare il Raspberry.

Disclaimer
La presente guida non è tutta farina del mio sacco, ma è il frutto di ricerche su vari siti internet (non ne sarei stato assolutamente capace da solo).
Tutto quanto esposto è stato però da me testato unicamente su Raspberry PI modello 3B+, con sistema operativo Raspbian. Non garantisco il funzionamento pertanto su altri dispositivi e/o altri sistemi operativi.
Parimenti, non mi assumo alcuna responsabilità circa eventuali danni arrecati a seguito dell’applicazione della seguente guida.