2 Temperatura y Humedad en la nube

Una vez que hemos visto como montar nuestro propio servidor web, vamos a ver ahora como hacerlo directamente desde un servidor en la nube.

En primer lugar vamos a usar la plataforma http://dweet.io, en la cual no hay que registrarse para usarla, basta con crear un nombre de dispositivo único para llamar a la HAPI

<sxh c> wiki.intrusos.info Librerias #include “ESP8266WiFi.h” #include “DHT.h”

Parámetros de Conexión a la WiFi const char* ssid = “miredwifi”; const char* password = “miclave”; Pin del ESP8266 al que está conectado. El GPIO 4 corresponde al D2 del ESP8266-12E NodeMCU v3 #define DHTPIN 4 tipo de sensor DHT #define DHTTYPE DHT11 DHT 11 Inicializa el sensor DHT dht(DHTPIN, DHTTYPE);

Host al que nos vamos a conectar const char* host = “dweet.io”; void setup() { Serial.begin(115200); delay(100); Inicializamos el sensor

dht.begin();

// Conectamod a la red WIFI
Serial.println();
Serial.println();
Serial.print("Conectando con la red WIFI ");
Serial.println(ssid);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.println("Conectado a la WiFi");
Serial.println("Dirección IP: ");
Serial.println(WiFi.localIP());

}

void loop() {

// Usa la clase WiFiClient para crear una conexión TCP
WiFiClient client;
const int httpPort = 80;
if (!client.connect(host, httpPort)) {
Serial.println("Error de Conexión");
return;
}

// Obtiene la Humedad
float h = dht.readHumidity();

// Obtiene la Temperatura en Celsius
float t = dht.readTemperature();

delay(3000); //retardo para que no de fallo de lectura del sensor
// Control de errores, valida que se obtuvieron valores para los datos medidos
if (isnan(h) || isnan(t)) {
Serial.println("Falla al leer el sensor DHT!");
client.print("Falla al leer el sensor DHT");
return;
}

// Enviamos los datos al servidor.

client.print(String("GET /dweet/for/tunombrededispositivounico?temperatura=") + String(t) + "&humedad=" + String(h) + " HTTP/1.1\r\n" +
"Host: " + host + "\r\n" +
"Connection: close\r\n\r\n");

// Leemos la respuesta del servidor y la sacamos por el puerto serie
while (client.available()) {
String line = client.readStringUntil('\r');
Serial.print(line);
}

Serial.println();
Serial.println("Cerramos la conexión");

// Repetir cada 10s
delay(10000);

} </sxh>

Si toda ha ido correctamente deberías de ver por el puerto serial algo similar a

{"this":"succeeded","by":"dweeting","the":"dweet","with":{"thing":"elesp8266delc","created":"2016-08-31T22:04:33.970Z","content":{"temperatura":27,"humedad":48},"transaction":"dd2d251d-e6ab-4006-9cd3-168fae589158"}}
Cerramos la conexión
HTTP/1.1 200 OK
Access-Control-Allow-Origin: *
Content-Type: application/json
Content-Length: 215
Date: Wed, 31 Aug 2016 22:04:49 GMT
Connection: close

Visualizar gráficamente nuestros datos

Como última parte de esta práctica vamos a visualizar gráficamente las medidas de humedad y temperatura usando la plataforma https://www.freeboard.io

Lo primero es crear una cuenta y una vez creada debemos seguir estos pasos:

Añadir un DATASOURCE con los parámetros que pusimos en nuestro código

Pulsamos el botón Add Panel y dentro del panel pulsamos el botón + para añadir un WIDGET

Con esto ya podemos ver gráficamente nuestro dispositivo

Referencias

https://www.openhomeautomation.net/cloud-temperature-logger-esp8266/