{{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/