dataclient-dht22
Definizioni | Funzioni | Variabili
Riferimenti per il file dataclient-dht22.ino

DATACLIENT-DHT22: invia i dati recuperati dal dht22 al raspberry via MQTT. Continua...

#include <ArduinoJson.h>
#include "DHT.h"
#include <ESP8266WiFi.h>
#include <PubSubClient.h>
Grafo delle dipendenze di inclusione per dataclient-dht22.ino:

Definizioni

#define dim(x)   (sizeof(dim_helper(x)))
 
#define dhtConnected   true
 true = DHT22 utilizzabile/connesso Continua...
 
#define serialDebug   false
 true = visualizza messaggi di debug attraverso comunicazione seriale Continua...
 
#define DHTPIN   4
 pin dato del DHT22 Continua...
 
#define DHTTYPE   DHT22
 tipo di sensore DHT (DHT22) Continua...
 

Funzioni

template<typename T , int N>
char(& dim_helper (T(&)[N]))[N]
 
DHT dht (DHTPIN, DHTTYPE)
 creazione oggetto dht Continua...
 
PubSubClient client (espClient)
 usa client WiFi per MQTT Continua...
 
void WiFiconn ()
 
void macAddrToString (byte *mac, char *macAddr)
 
void MQTTconn ()
 
void present ()
 
void callback (char *topic, byte *payload, unsigned int length)
 
void reportData (float t_humidity, float t_temp, int t_rssi)
 
void setup ()
 
void loop ()
 

Variabili

const int nodeType = 0
 tipo di nodo Continua...
 
const char mqttServer [15] = "raspberry"
 IP/dominio mqtt server. Continua...
 
const int mqttPort = 1883
 porta mqtt Continua...
 
const char * mqttUser = "test"
 utente mqtt Continua...
 
const char * mqttPassword = "test"
 password mqtt Continua...
 
char prMainTopic [14] = "presentation/"
 topic principale presentazione Continua...
 
char optMainTopic [9] = "options/"
 topic principale opzioni Continua...
 
char dataMainTopic [6] = "data/"
 topic principale dati Continua...
 
float humidity = 12.34
 umidita' (default 12.34 come test) Continua...
 
float temperature = 12.34
 temperatura Celsius (default 12.34 come test) Continua...
 
int timeSinceLastRead = 0
 variabile tempo dall'ultima lettura DHT Continua...
 
int timeToWait = 2000
 variabile tempo da aspettare per interrogare DHT (minimo 2000 [ms]) Continua...
 
const char * WIFI_SSID = "nameofnetwork"
 SSID access point. Continua...
 
const char * WIFI_PASS = "longerthan8charspassword"
 Passphrase access point. Continua...
 
char ipAddr [16]
 contiene IP address Continua...
 
char macAddr [18] = {0}
 contiene MAC address Continua...
 
WiFiClient espClient
 crea un client WiFI Continua...
 

Descrizione dettagliata

DATACLIENT-DHT22: invia i dati recuperati dal dht22 al raspberry via MQTT.

Lo sketch verifica nel setup() se il valore delle variabili e' accettabile:

poi memorizza in <macAddr> l'indirizzo mac del dispositivo.

Per farlo si usa la funzione macAddrToString()

Formato: @codeAB:AB:AB:AB:AB:AB

Nella funzione loop() viene gestita la connessione all'access point di raspberry attraverso la funzione WiFiconn() e la connessione al broker MQTT con la funzione MQTTconn().

WiFiconn() memorizza l'indirizzo IP nella stringa <ipAddr>

MQTTconn() annuncia la presenza del sensore al sistema usando la funzione present()

Dopo essersi connessi all'AP e al broker MQTT vengono rilevate temperatura e umidita' dal DHT22 e viene misurato l'RSSI. Temperatura, umidita' e RSSI vengono mandati al broker MQTT dalla funzione reportData()

Autore
Stefano Zenaro
Versione
01_01
Data
Date
2020/02/08 20:42:00

Documentazione delle definizioni

◆ dim

#define dim (   x)    (sizeof(dim_helper(x)))

◆ dhtConnected

#define dhtConnected   true

true = DHT22 utilizzabile/connesso

◆ serialDebug

#define serialDebug   false

true = visualizza messaggi di debug attraverso comunicazione seriale

◆ DHTPIN

#define DHTPIN   4

pin dato del DHT22

◆ DHTTYPE

#define DHTTYPE   DHT22

tipo di sensore DHT (DHT22)

Documentazione delle funzioni

◆ dim_helper()

template<typename T , int N>
char(& dim_helper ( T(&)  [N]) )[N]

◆ dht()

DHT dht ( DHTPIN  ,
DHTTYPE   
)

creazione oggetto dht

Questo è il grafo dei chiamanti di questa funzione:

◆ client()

PubSubClient client ( espClient  )

usa client WiFi per MQTT

Questo è il grafo dei chiamanti di questa funzione:

◆ WiFiconn()

void WiFiconn ( )

Questa funzione si occupa di connettersi al WiFi.

Disattiva e riattiva il WiFi per evitare un tentativo di connessione mentre e' gia' connesso, e utilizza ssid e password per tentare una connessione alla rete. Dopo la connessione viene memorizzato l'indirizzo IP in <ipAddr>.

Se in 15 secondi non ci riesce smette di tentare di connettersi all'access point.

Questo è il grafo dei chiamanti di questa funzione:

◆ macAddrToString()

void macAddrToString ( byte *  mac,
char *  macAddr 
)

Converte indirizzo MAC in una stringa.

Scorre l'array di byte: per ogni byte prende i due valori esadecimali e ottiene la loro "versione stringa". Ogni byte e' concatenato da ":"

L'ultimo ":" viene sostituito da "\0"

Parametri
macPuntatore a un array di byte con indirizzo MAC
macAddrPuntatore a una stringa
Questo è il grafo dei chiamanti di questa funzione:

◆ MQTTconn()

void MQTTconn ( )

Connette il nodemcu al broker MQTT su raspberry.

Imposta nome/IP del server e la relativa porta, imposta la funzione da richiamare quando si ricevono messaggi sui topic sottoscritti e si tenta la connessione con username e password.

L'id di connessione e' l'indirizzo MAC del dispositivo.

Se la connessione ha successo viene inviato un messaggio di presentazione attraverso la funzione present()

Questo è il grafo delle chiamate per questa funzione:
Questo è il grafo dei chiamanti di questa funzione:

◆ present()

void present ( )

Presenta il dispositivo al sistema via messaggio MQTT.

Manda sul topic presentation/<mac> il proprio indirizzo MAC, IP, tipo di nodo e timeToWait. Se il dispositivo e' riuscito a inviare il dato il client si iscrive al topic per ottenere configurazioni dal raspberry, altrimenti si disconnette dal broker per cercare di ri-presentarsi alla prossima connessione

Questo è il grafo delle chiamate per questa funzione:
Questo è il grafo dei chiamanti di questa funzione:

◆ callback()

void callback ( char *  topic,
byte *  payload,
unsigned int  length 
)

Funzione di callback sui topic sottoscritti.

Compone il topic opzioni. Se il topic del messaggio ricevuto corrisponde al topic delle opzioni, controlla se il valore ricevuto e' valido. Se e' valido (numero intero) usalo.

Parametri
topicStringa con topic
payloadMessaggio ricevuto
lengthLunghezza messaggio
Questo è il grafo dei chiamanti di questa funzione:

◆ reportData()

void reportData ( float  t_humidity,
float  t_temp,
int  t_rssi 
)

Invia i dati al broker MQTT.

Compone il topic per i dati, crea un oggetto JSON con i dati passati alla funzione, lo converte in stringa e lo invia al broker MQTT su raspberry pi.

Parametri
t_humidityFloat umidita'
t_tempFloat temperatura
t_rssiIntero RSSI
Questo è il grafo delle chiamate per questa funzione:
Questo è il grafo dei chiamanti di questa funzione:

◆ setup()

void setup ( )

Salva indirizzo MAC e si connette all' access point e al broker MQTT.

La funzione converte l'indirizzo MAC da byte array in stringa e lo salva nella variabile <macAddr>, si assicura che timeToWait vale almeno 2000 [ms]

Per rilevare i dati dal DHT22 servono almeno 2 secondi tra le letture

Questo è il grafo delle chiamate per questa funzione:

◆ loop()

void loop ( )

Mantiene connesso il dispositivo a WiFi e broker MQTT, rileva dati e li invia al broker.

La funzione controlla se il dispositivo e' connesso al WiFi: se non e' piu' connesso si ricollega richiamando la funzione WiFiconn()

Poi controlla se e' connesso al broker MQTT: se non e' piu' connesso si ricollega richiamando la funzione MQTTconn()

Ogni <timeToWait> viene salvato il valore di RSSI, vengono eseguite le rilevazioni dal sensore DHT22 e poi invia i dati al broker MQTT con la funzione reportData()

Questo è il grafo delle chiamate per questa funzione:

Documentazione delle variabili

◆ nodeType

const int nodeType = 0

tipo di nodo

◆ mqttServer

const char mqttServer[15] = "raspberry"

IP/dominio mqtt server.

◆ mqttPort

const int mqttPort = 1883

porta mqtt

◆ mqttUser

const char* mqttUser = "test"

utente mqtt

◆ mqttPassword

const char* mqttPassword = "test"

password mqtt

◆ prMainTopic

char prMainTopic[14] = "presentation/"

topic principale presentazione

◆ optMainTopic

char optMainTopic[9] = "options/"

topic principale opzioni

◆ dataMainTopic

char dataMainTopic[6] = "data/"

topic principale dati

◆ humidity

float humidity = 12.34

umidita' (default 12.34 come test)

◆ temperature

float temperature = 12.34

temperatura Celsius (default 12.34 come test)

◆ timeSinceLastRead

int timeSinceLastRead = 0

variabile tempo dall'ultima lettura DHT

◆ timeToWait

int timeToWait = 2000

variabile tempo da aspettare per interrogare DHT (minimo 2000 [ms])

◆ WIFI_SSID

const char* WIFI_SSID = "nameofnetwork"

SSID access point.

◆ WIFI_PASS

const char* WIFI_PASS = "longerthan8charspassword"

Passphrase access point.

◆ ipAddr

char ipAddr[16]

contiene IP address

◆ macAddr

char macAddr[18] = {0}

contiene MAC address

◆ espClient

WiFiClient espClient

crea un client WiFI

mqttUser
const char * mqttUser
utente mqtt
Definition: dataclient-dht22.ino:53
temperature
float temperature
temperatura Celsius (default 12.34 come test)
Definition: dataclient-dht22.ino:62
MQTTconn
void MQTTconn()
Definition: dataclient-dht22.ino:185
macAddrToString
void macAddrToString(byte *mac, char *macAddr)
Definition: dataclient-dht22.ino:154
callback
void callback(char *topic, byte *payload, unsigned int length)
Definition: dataclient-dht22.ino:292
loop
void loop()
Definition: dataclient-dht22.ino:432
dim_helper
char(& dim_helper(T(&)[N]))[N]
optMainTopic
char optMainTopic[9]
topic principale opzioni
Definition: dataclient-dht22.ino:57
macAddr
char macAddr[18]
contiene MAC address
Definition: dataclient-dht22.ino:72
mqttPassword
const char * mqttPassword
password mqtt
Definition: dataclient-dht22.ino:54
client
PubSubClient client(espClient)
usa client WiFi per MQTT
timeSinceLastRead
int timeSinceLastRead
variabile tempo dall'ultima lettura DHT
Definition: dataclient-dht22.ino:64
dhtConnected
#define dhtConnected
true = DHT22 utilizzabile/connesso
Definition: dataclient-dht22.ino:42
DHTTYPE
#define DHTTYPE
tipo di sensore DHT (DHT22)
Definition: dataclient-dht22.ino:46
humidity
float humidity
umidita' (default 12.34 come test)
Definition: dataclient-dht22.ino:61
WiFiconn
void WiFiconn()
Definition: dataclient-dht22.ino:85
dht
DHT dht(DHTPIN, DHTTYPE)
creazione oggetto dht
ipAddr
char ipAddr[16]
contiene IP address
Definition: dataclient-dht22.ino:71
setup
void setup()
Definition: dataclient-dht22.ino:399
nodeType
const int nodeType
tipo di nodo
Definition: dataclient-dht22.ino:48
timeToWait
int timeToWait
variabile tempo da aspettare per interrogare DHT (minimo 2000 [ms])
Definition: dataclient-dht22.ino:65
WIFI_SSID
const char * WIFI_SSID
SSID access point.
Definition: dataclient-dht22.ino:68
mqttServer
const char mqttServer[15]
IP/dominio mqtt server.
Definition: dataclient-dht22.ino:51
dataMainTopic
char dataMainTopic[6]
topic principale dati
Definition: dataclient-dht22.ino:58
mqttPort
const int mqttPort
porta mqtt
Definition: dataclient-dht22.ino:52
WIFI_PASS
const char * WIFI_PASS
Passphrase access point.
Definition: dataclient-dht22.ino:69
dim
#define dim(x)
Definition: dataclient-dht22.ino:30
present
void present()
Definition: dataclient-dht22.ino:240
reportData
void reportData(float t_humidity, float t_temp, int t_rssi)
Definition: dataclient-dht22.ino:354
prMainTopic
char prMainTopic[14]
topic principale presentazione
Definition: dataclient-dht22.ino:56
espClient
WiFiClient espClient
crea un client WiFI
Definition: dataclient-dht22.ino:79
serialDebug
#define serialDebug
true = visualizza messaggi di debug attraverso comunicazione seriale
Definition: dataclient-dht22.ino:43
DHTPIN
#define DHTPIN
pin dato del DHT22
Definition: dataclient-dht22.ino:45