{{tag>cloud nube temperatura esp8266}}
===== 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
// 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);
}
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 {{ :electronica:esp8266:datasource.png?nolink&600 |}}
- Pulsamos el botón **Add Panel** y dentro del panel pulsamos el botón **+** para añadir un WIDGET {{ :electronica:esp8266:temperatura.png?nolink&600 |}} {{ :electronica:esp8266:humedad.png?nolink&600 |}}
Con esto ya podemos ver gráficamente nuestro dispositivo
{{ :electronica:esp8266:freeboard.png?nolink&600 |}}
==== Referencias ====
* https://www.openhomeautomation.net/cloud-temperature-logger-esp8266/