Domotica
Apple HomeKit server su Raspberry Pi (HAP-NodeJS)

Apple HomeKit server su Raspberry Pi (HAP-NodeJS)

In questo articolo andremo ad configurare il nostro Raspberry Pi come server HomeKit. Volendo si può utilizzare il solo raspberry Pi e qualche relé (pilotati dai GPIO del Raspberry Pi) per poter controllare una o più prese elettriche dal nostro dispositivo Apple (iPhone, iPad, mac, ecc..). Personalmente ho utilizzato il Raspberry Pi solo come server (Bridge) HomeKit e svariate schede WeMos D1 Mini sparse per casa, per controllare prese elettriche, luci, ventilatore,il termostato della caldaia e il condizionatore ed anche per rilevare la temperatura e l’umidità in alcune stanze. Detto questo procediamo alla preparazione del nostro Raspberry Pi.

Tutto questo è stato reso possibile grazie a KhaosT che ha messo a disposizione su Github la repository HAP-NodeJS (https://github.com/KhaosT/HAP-NodeJS)

Per prima cosa colleghiamoci in SSH sul nostro Raspberry Pi ed eseguiamo i soliti comandi per aggiornarlo:

sudo apt-get update && sudo apt-get upgrade -y && sudo apt-get dist-upgrade

Installazione di node.js, npm, node-gyp ed altre cose che ci servono:

Ora possiamo procedere con l’installazione di HAP-NodeJS.

sudo apt-get install git-core libnss-mdns libavahi-compat-libdnssd-dev -y
sudo apt-get install -y npm

A questo punto dobbiamo scaricare Node.js .Nel momento in cui sto scrivendo questa guida, l’ultima versione di Node.js è la 13.7.0, fate riferimento al sito https://nodejs.org/dist/ per trovare l’ultima versione di Node.js.

Prima di procedere con il comando wget per scaricare il setup bisogna sapere a quale architettura fa parte il nostro Raspberry Pi.
Per avere questa informazione digitare il comando “lscpu” da terminale, nel risultato che tirerà fuori troveremo l’architettura utilizzata.
Ad esempio per un Raspberry Pi 3B, l’Architettura è armv7l , mentre per un Raspberry Pi Zero W l’architettura é armv6l.

Per un Raspberry Pi3B i comandi saranno:
wget https://nodejs.org/dist/v13.7.0/node-v13.7.0-linux-armv7l.tar.gz
tar -xvf node-v13.7.0-linux-armv7l.tar.gz
cd node-v13.7.0-linux-armv7l

mentre per una Raspberry Pi Zero W i comandi da eseguire saranno:
wget https://nodejs.org/dist/latest-v11.x/node-v11.15.0-linux-armv6l.tar.gz
tar -xvf node-v11.15.0-linux-armv6l.tar.gz
cd node-v11.15.0-linux-armv6l

il resto della procedura sarà uguale indifferentemente dall’Architettura hardware.
sudo cp -R * /usr/local/
cd ..

sudo npm config set registry http://registry.npmjs.org/
sudo npm install -g node-gyp

sudo npm install -g ts-node
sudo npm install -g typescript

Cloniamo il progetto HAP-NodeJS dalla repository di KhaosT:

git clone https://github.com/KhaosT/HAP-NodeJS.git
sudo chown -R pi ./HAP-NodeJS
sudo chgrp -R pi ./HAP-NodeJS
sudo chmod g+s ./HAP-NodeJS
sudo chmod u+s ./HAP-NodeJS
cd HAP-NodeJS
npm rebuild
npm install
npm install --only=dev

Fatti tutti questi passaggi, proviamo a far partire il server HomeKit con il comando:

ts-node --files src/BridgedCore.ts
oppure
ts-node --files src/Core.ts

(utilizzando il primo comando basterà inserire il codice di associazione una singola volta e tutti gli accessori configurati sul Raspberry Pi verranno mostrati sul nostro dispositivo, mentre usando il comando Core.ts bisognerà associare un accessorio per volta. Decidete voi quale vi fa più comodo).

Dopo qualche secondo il sevizio HAP-NodeJS comincerà a rendere visibili una serie di accessori demo gia configurati all’interno del nostro Raspberry Pi (nello specifico, all’interno della cartella HAP-NodeJS troverete una cartella chiamata “src” e al suo interno un ulteriore cartella chiamata “accessories” dentro la quale vi sono i nostri accessori).

Arrivati a questo punto prendiamo il nostro dispositivo Apple (iPhone, iPad o Mac che supporti HomeKit) e apriamo l’applicazione Casa e procediamo con l’aggiunta di un nuovo accessorio.
Il codice da utilizzare per aggiungere gli accessori è: 031-45-154
Qui di seguito un breve video che dimostrativo come associare gli accessori demo (gia presenti).

Ora che abbiamo testato il nostro server HomeKit basato su Raspberry Pi possiamo fermare il test tornando alla finestra terminale e premere i tasti CTRL+C.

Di seguito riporto dei link per vedere nel dettaglio come modificare un accessorio HomeKit e farlo interagire con una scheda Arduino Wifi tramite il protocollo MQTT e come far si che il servizio HAP-NodeJS vega eseguito automaticamente all’avvio del nostro Raspberry Pi.

Come installare il servizio di Broker MQTT su RaspberryPi

Controlliamo una lampadina da Apple HomeKit con HAP-NodeJS su Raspberry Pi e Wemos D1 mini via MQTT

Controlliamo un sensore di Temperatura e Umidità da Apple HomeKit con HAP-NodeJS su Raspberry Pi e Wemos D1 mini via MQTT

Controlliamo una Led Strip RGB da Apple Homekit con HAP-NodeJS su Raspberry Pi e Wemos D1 mini via MQTT

Controliamo una presa ellettrica da Apple HomeKit con HAP-NodeJS su Raspberry Pi e Wemos D1 mini via MQTT

Controlliamo la caldaia e il condizionatore da Apple Homekit con HAP-NodeJS su Raspberry Pi e Wemos D1 mini via MQTT

Controlliamo un sensore di Gas/Fumo da Apple Homekit con HAP-NodeJS su Raspberry Pi e Wemos D1 mini via MQTT

Controlliamo un sensore di qualità dell’aria da Apple Homekit con HAP-NodeJS su Raspberry Pi e Wemos D1 mini via MQTT

Come far partire automaticamente il servizio HAP-NodeJS all’avvio del Raspberry Pi

Mentre per approfondire l’argomento vi rimando alla pagina web di Apple dove spiega al meglio le caratteristiche di questo protocollo.

https://developer.apple.com/it/support/homekit-accessory-protocol/

1 thought on “Apple HomeKit server su Raspberry Pi (HAP-NodeJS)

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *