Controlliamo una lampadina da Apple Homekit con HAP-NodeJS su Raspberry Pi e Wemos D1 mini via MQTT
Nell’articolo di precedente, inerente all’installazione di HAP-NodeJS, abbiamo potuto notare che avviando il servizio node, sull’applicazione Casa dei nostri dispositivi Apple, sono apparsi una serie di accessori. Questi accessori, nel nostro Raspberry Pi, sono localizzati nella cartella /home/pi/HAP-NodeJS/src/accessories.
Per ogni accessorio vi è un file che termina per _accessories.ts (ad es. Thermostat_accessories.ts ….). Possiamo modificare questi file, o crearne di nuovi prendendo spunto da questi.
Personalmente ho avuto la necessità di interfacciare i vari accessori Homekit con delle periferiche tipo Arduino tramite il protocollo MQTT (Mosquitto). Esistono anche altri metodi per far dialogare il Raspberry Pi con queste schede, ma con questo protocollo mi è stato tutto più semplice.
Il primo passaggio da fare è quello di installare un Broker MQTT sul nostro Raspberry Pi. Qualche giorno fa ho scritto un articolo (reperibile tramite questo link) che spiega come installarlo sul nostro Raspberry Pi.
Il passaggio successivo e quello di installare un pacchetto node per integrare i comandi MQTT, di seguito il comando da eseguire da terminale
cd /home/pi/HAP-NodeJS
sudo npm install mqtt --save
sudo npm install mqtt -g
Ora per rendere il tutto più semplice ho creato questa serie di comandi che non faranno altro che spostare tutti gli accessori “demo” all’interno di una cartella chiamata defaultAccessories (in modo che non vengano presi in considerazione quando il servizio HAP-NodeJS viene eseguito) e successivamente scaricherà e posizionerà il mio accessorio MQTT di esempio, nella cartella /home/pi/HAP-NodeJS/src/accessories
.
cd /home/pi/HAP-NodeJS/src/accessories
sudo mkdir defaultAccessories
sudo mv *_accessory.ts defaultAccessorieswget https://www.fargionconsulting.com/wp-content/uploads/2020/02/desklight_accessory.ts
In sostanza, in questo accessorio, sono andato ad inserire alcune parti al codice di default, e con qualche funzione ho integrato la gestione degli stati di una lampadina (ON o OFF) tramite il protocollo MQTT.
Ora passiamo al codice Arduino per la nostra Wemos D1 mini.
scaricabile da questo link.
Anche qui c’è da premettere che vanno installate alcune librerie sul programma Arduino IDE, qui di seguito le vado ad elencare:
- ArduinoOTA (disponibile dal gestore librerie in Arduino IDE)
- PubSubClient by Nick O’Leary (disponibile dal gestore librerie in Arduino IDE)
- RemoteDebug by Joao Lopes (disponibile dal gestore librerie in Arduino IDE)
Ora, prima di procedere con il caricamento del codice Arduino sulla scheda Wemos D1 mini (oltre a selezionare la giusta porta seriale, la corretta scheda ed il corrento boundrate) dobbiamo aggiornare il codice Arduino con il nome e la password della nostra rete WiFi e l’IP del nostro Raspberry Pi, dopo di che il gioco è fatto!
Per collegare la nostra lampadina è necessario connettere alla nostra scheda Wemos D1 mini una shield relé che non richiede la necessità di effettuare saldature o se vogliamo un relè a 5v(per il controllo). Comunque di seguito riporto uno schema dei collegamenti.