dataclient-dht22
|
Questo Sketch arduino si occupa di inviare i dati recuperati dal dht22 al raspberry via MQTT.
Personalizzare, se necessario, il valore delle seguenti variabili:
NOTA: il numero pin nello sketch e il numero sulla scheda non corrispondono
I valori di default delle altre variabili sono adatti all'uso previsto nel progetto201 e la loro modifica puo' portare alla modifica di altri script.
Preparare il computer all'interfacciamento con Node MCU:
Per altre schede installare il relativo driver
Preparare l'arduino IDE per caricare sketch su Node MCU:
File --> Impostazioni
(CTRL + virgola)Strumenti --> Scheda: ... --> Gestore schede
esp8266 by ESP8266 Community
Per altre schede attenersi al procedimento consigliato dal produttore
Installare le librerie usate da questo sketch:
Sketch --> #Include libreria --> Gestione librerie
ArduinoJson by Benoit Blanchon
per gestire oggetti JSONAdafruit Unified Sensor by Adafruit
, libreria necessaria per le altre librerie di sensori di AdafruitDHT sensor library by Adafruit
per gestire il DHT22PubSubClient by Nick O'Leary
per connettersi e inviare messaggi al broker MQTTSelezionare da Strumenti
la porta a cui e' connessa la scheda e premere il pulsante Carica
per caricare lo sketch.
Come in tutti gli sketch arduino vengono definiti variabili e oggetti, poi viene richiamata una volta la funzione setup()
e infine viene richiamata "all'infinito" la funzione loop()
La funzione setup()
richiama la funzione macAddrToString()
per definire nella variabile stringa <macAddr>
l'indirizzo MAC. La funzione poi si assicura che <timeToWait>
, il tempo interposto tra le rilevazioni, sia un numero accettabile (>= 2000 [ms])
Altrimenti viene impostato 2000 come valore di default (2 secondi tra lettura)
La funzione loop()
mantiene la scheda connessa all'access point di raspberry (con la funzione WiFiconn()
) e al broker MQTT (con la funzione MQTTconn()
e il metodo client.loop()
). Se la scheda e' connessa a WiFi e broker MQTT si verifica se e' stato atteso il tempo <timeToWait>
: se e' così viene rilevata temperatura e umidita' e memorizzato l'RSSI.
Lo sketch, dopo essersi assicurato che le rilevazioni hanno avuto successo, utilizza la funzione reportData()
per inviare i dati al broker MQTT.
Per la documentazione dettagliata del codice (creata da doxygen) visitare questa pagina
macAddrToString()
Scorre l'array di byte restituito da WiFi.macAddress()
, concatena come stringa i byte e la salva in <macAddr>
WiFiconn()
Si connette al WiFi e salva nella stringa <ipAddr>
l'indirizzo IP
MQTTconn()
Si connette al broker MQTT e richiama la funzione present()
present()
Invia al broker MQTT indirizzi IP e MAC, tipo di nodo e <timeToWait>
in formato JSON
reportData()
Invia al broker MQTT i dati rilevati dal sensore e l'RSSI in formato JSON
2020-02-18 01_01:
Prima versione
Modificare il valore di queste due variabili:
NOTA: questa variabile in produzione DEVE essere impostata a true per rilevare la temperatura dal DHT22. Puo' essere utile impostare false durante fasi di test in cui non si ha necessita' del sensore.
NOTA: questa variabile in produzione DOVREBBE essere impostata a false: uno dei motivi e' la visualizzazione della password WiFi in caso di insuccesso durante la connessione
Stefano Zenaro (Github)