|
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 schedeesp8266 by ESP8266 CommunityPer altre schede attenersi al procedimento consigliato dal produttore
Installare le librerie usate da questo sketch:
Sketch --> #Include libreria --> Gestione librerieArduinoJson 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)
1.8.16