Arduino
Controlliamo un sensore di qualità dell’aria 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

In questo articolo andremo a creare e configurare un sensore di qualità dell’aria all’interno di HAP-NodeJS. Inoltre spiegherò come crearlo fisicamente, utilizzando una scheda Wemos D1 mini, un sensore MQ2 ed un sensore DHT22.
Anche in questo caso per far dialogare tra loro (Raspberry Pi e Wemos D1 mini) ho utilizzato il protocollo MQTT (Mosquitto).

Ovviamente come pre-requisito si prevede che abbiate un Raspberry Pi con HAP-NodeJS correttamente installato.
Di seguito i link alle due guide:
Apple HomeKit su Raspberry Pi
MQTT Broker (Mosquitto) su RaspberryPi

Inoltre è obbiligatorio aver installato i pacchetti npm per il modulo MQTT, se non l’avete fatto i comandi sono i seguenti:

cd /home/pi/HAP-NodeJS
sudo npm install mqtt --save
sudo npm install mqtt -g

Per cominciare colleghiamoci in SSH sul nostro Raspberry Pi ed eseguiamo i seguenti comandi per scaricare e installare l’accessorio.

cd /home/pi/HAP-NodeJS/src/accessories
wget https://www.fargionconsulting.com/wp-content/uploads/2020/02/AirQualityTempHumSensor_accessory.ts

Ora, se abbiamo impostato l’avvio automatico del servizio HAP-NodeJS (come descritto in questa guida), dobbiamo riavviare il Raspberry Pi per far si che HAP-NodeJS si accorga del nuovo accessorio.
Inoltre, se abbiamo deciso di utilizzare BridgeCore.ts l’accessorio ci comparirà automaticamente assieme all’accessorio precedentemente creato ed associato, mentre se stiamo utilizzando Core.js, dal nostro dispositivo Apple dobbiamo aggiungere il nuovo accessorio ed anche per questo sensore, l’abbinamento avviene con il codice 031-45-154.

Passiamo ora al lato Hardware, per creare questo accessorio, come dicevo inizialmente, avremo bisogno di due sensori, un DHT22 e un sensore MQ2.
Per quanto riguarda il sensore DHT22 consiglio l’utilizzo della shield per Wemos D1 mini con sensore DHT22 già saldato, mentre per il sensore MQ2 dobbiamo collegarlo ‘manualmente’.
Analizzando la libreria MQ2 (utilizzata per leggere al meglio i valori di questo sensore) mi sono accorto che fornendogli la temperatura e l’umidità era possibile elaborare il livello di CO2/PPM nell’aria in maniera più accurata. Per questo motivo ho deciso di integrare sulla stessa scheda anche un sensore DHT22.
Nonostante l’utilizzo di questi sensori e di questa libreria è necessario calibrare il sensore e, per fare questa operazione nella maniera più semplice, ho modificato la libreria del sensore MQ2 (integrandola direttamente nel codice Arduino) ed aggiunto un interruttore (via HomeKit) per avviare la modalità di calibrazione.
L’operazione di calibrazione va effettuata una volta una tantum (la prima volta e se cambiate cavo usb o alimentatore), posizionando tutta la scheda con i due sensori all’aria aperta in modo da rilevare il valore di aria pulita (400Co2/ppm). L’operazione di calibrazione richiede 1 ora circa e termina autonomamente ma, volendo possiamo fermarla all’occorrenza disattivando l’interruttore da Homekit.
Inoltre, una volta calibrato il sensore, questo memorizzerà il valore di calibrazione all’interno della sua EEPROM in modo tale che anche se si spegne la scheda e la si riaccende, questa manterrà in memoria i valore di calibrazione.

Di seguito lo schema dei collegamenti..

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)
  • DHT library disponibile da questo link

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!

Lascia un commento

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