Cómo enviar datos desde NodeMCU a Google Sheets
Enviar datos de sensores usando el firmware NodeMCU a través de Internet a una hoja de cálculo de Google Sheets es muy conveniente. Esto se puede hacer a través de un script de Google y tiene la ventaja de no costar nada, a diferencia de muchas alternativas de almacenamiento en la nube.
Para el propósito de este artículo, le mostraremos un proyecto simple para enviar lecturas de temperatura usando el ESP8266 y un sensor de temperatura y humedad DHT11.
Configura tu hoja de Google
Primero, querrá crear una nueva hoja de cálculo. Inicie sesión en su cuenta de Google, vaya a Mi unidad y abra una hoja de cálculo en blanco.
Copie la clave de URL de su hoja de cálculo. Dé a la hoja de cálculo un nombre intuitivo. Vaya al Editor de secuencias de comandos, en el menú Herramientas.
Dale un nombre a tu guión (de nuevo, mantenlo intuitivo, especialmente si estás haciendo más de un proyecto). Utilice el script proporcionado y cópielo y péguelo en el editor de Google Script.
Debajo de la línea de identificación de la hoja de cálculo, pegue la clave de URL de su hoja de cálculo guardada.
Guarde el script e impleméntelo como una aplicación. Encontrarás esta opción en el menú Publicar. Configure los parámetros de implementación para asegurarse de que la hoja de cálculo funcione correctamente.
- Guarde la “URL actual de la aplicación web”.
- Guarde la versión del proyecto como nueva para todas las revisiones del script (esto le permite a Google actualizar cualquier revisión que pueda hacer en el futuro).
- Para el campo Ejecutar la aplicación como, agregue el siguiente ling “yo (su dirección de Gmail)”.
- Para el campo Quién tiene acceso a la aplicación, agregue la siguiente línea “cualquiera, incluso anónimo”.
Código para configurar el sensor ESP8266 y DHT11
Esto es lo que debe cargar al conectar su ESP8266 al sensor DHT11:
#include “ESP8266WiFi.h”
#include “DHT.h”
#define DHTPIN 2 // a qué pin digital está conectado
// pin2 a D4 en placa esp
// Elimina el comentario en el código para el tipo de sensor DHT que estás usando.
#define DHTTYPE DHT11 // DHT 11
// # definir DHTTYPE DHT21 // DHT 21
// # definir DHTTYPE DHT22 // DHT 22
DHT dht (DHTPIN, DHTTYPE);
const char SITIO WEB[] = “Api.pushingbox.com”; // el servidor API PushingBox
const String devid = “
const char * MY_SSID = “ const char * MY_PWD = “ configuración vacía () { Serial.begin (115200); dht.begin (); Serial.print (“Conectando a” + * MY_SSID); WiFi.begin (MY_SSID, MY_PWD); Serial.println (“entrando en wl connect”); while (WiFi.status ()! = WL_CONNECTED) // no conectado, .. esperando para conectarse { retraso (1000); Serial.print (“.”); } Serial.println (“wl conectado”); Serial.println (“”); Serial.println (“¡Credenciales aceptadas! Conectado a wifi n”); Serial.println (“”); } bucle vacío () { // Permita que pase más tiempo entre lecturas // rellenar la hoja de Google, para evitar sobrepasar el número de solicitudes gratuitas de PushingBox retraso (10000); // 10 segundos (frecuencia de muestreo frente a cuota de llamadas de servicio) flotar datos de humedad = dht.readHumidity (); // Leer la temperatura como Celsius (por defecto) float celData = dht.readTemperature (); // Leer la temperatura como Fahrenheit (isFahrenheit = true) float fehrData = dht.readTemperature (verdadero); // Compruebe si hay lecturas fallidas, salga temprano (para volver a intentarlo) if (isnan (datos de humedad) || isnan (celData) || isnan (fehrData)) { Serial.println (“¡No se pudo leer el sensor DHT!”); regreso; } // Calcular el índice de calor en grados Celsius (isFahreheit = false) flotador hicData = dht.computeHeatIndex (celData, humedadData, falso); // Calcular el índice de calor en Fahrenheit (predeterminado) flotar hifData = dht.computeHeatIndex (fehrData, humedadData); // Imprima en el monitor serial o terminal de su elección a 115200 baudios Serial.print (“Humedad:”); Serial.print (datos de humedad); Serial.print (”% t”); Serial.print (“Temperatura en Cel:”); Serial.print (celData); Serial.print (”* C“); Serial.print (“Temperatura en Fehr:”); Serial.print (fehrData); Serial.print (”* F t”); Serial.print (“Índice de calor en Cel:”); Serial.print (hicData); Serial.print (”* C“); Serial.print (“Índice de calor en Fehr:“); Serial.print (hifData); Serial.print (”* F n”); Cliente WiFiClient; // Crear una instancia de objeto WiFi // Inicio o servicio API usando nuestro Cliente WiFi a través de PushingBox if (client.connect (SITIO WEB, 80)) { client.print (“GET / pushbox? devid =” + devid + “&IdityData =” + (String) humedadData + “& CelData =” + (String) celData + “& FehrData =” + (String) fehrData + “& HicData =” + (String) hicData + “& HifData =” + (Cadena) hifData ); client.println (”HTTP / 1.1 ″); client.print (“Host:”); client.println (SITIO WEB); client.println (“Usuario-Agente: ESP8266 / 1.0”); client.println (“Conexión: cerrar”); cliente.println (); } } Aquí está el código que necesita para crear un script legible para la transferencia de datos de su sensor. OBTENER Consulta de solicitud: https://script.google.com/macros/s/ HumidityDat, celData, fehrData, hicData, hifData (variables GScript, PushingBox y Arduino en el orden en que debe escribirlas) Función doGet (e) { Logger.log (JSON.stringify (e)); // esto es para ver los parámetros Var result = ‘Ok’; If (e.parameter == undefined) { Resultado = ‘Sin parámetros’; } Else { Var id = ‘ Var hoja = SpreadsheetApp.openById (id) .getActivesheet (); Var newRow = sheet.getLastRow () + 1; Var rowData = []; // var time = new Date () ‘ rowData[0] = nueva fecha (); // para la marca de tiempo en la columna A for (var param en e.parameter) { logger.log (‘en bucle for, param =’ + param); var value = stripQuotes (e.parameter[param]); switch (param) { case’idityData ‘: // Parámetro rowData[1] = valor; // Valor en la columna B descanso; caso ‘celData’; rowData[2] = valor; descanso; caso ‘fehrData’: rowData[3] = valor; descanso; caso ‘hicData’: rowData[4] = valor; descanso; caso ‘hifData’: rowData[5] = valor; descanso; defecto: resultado = “parámetro no admitido”; } Logger.log (JSON.stringify (rowData)); Var newRange = sheet.getRange (newRow, 1, 1, rowData.length); newRange.setValues ([rowData]); } Devolver ContentService.createTextOutput (resultado); } Función stripQuotes (valor) { Valor devuelto.replace (/ ^[“’]|[‘|]$ / g, “”); } Este servicio actúa como intermediario entre los datos del sensor DHT y las Hojas de cálculo de Google. Con la API PushingBox, puede convertir los datos transmitidos por HTTP en datos HTTPS cifrados que Google reconoce. Tenga en cuenta que PushingBox lo limita a 1,000 solicitudes por día. Sin embargo, elimina gran parte del trabajo pesado y la experiencia necesarios para crear su propio algoritmo de cifrado al que responderá Google. Si está utilizando un sensor DHT con su ESP8266, encienda la unidad con 5v en lugar de 3.3v. Es posible que un voltaje más bajo no le dé lecturas correctas. Conecte los pines 2 y D4 en su ESP8266. Esta configuración funciona con Arduino IDE, preferiblemente una versión posterior a la 1.6.4. Esto también significa que necesita descargar algunas bibliotecas en su sistema. Las bibliotecas se pueden encontrar en los siguientes enlaces: El siguiente paso consiste en cargar el boceto de Arduino y configurarlo para su proyecto y su dispositivo. Solo hay tres campos relevantes que debe formatear y personalizar para su proyecto: Hay más formas de hacer esto y toneladas de tipos de sensores que puede usar para transferir datos usando un ESP8266 con firmware NodeMCU directamente a Google Sheets u otras plataformas en la nube. ¿Prefieres escribir tus propios scripts y código para personalizar tus proyectos o buscas en línea scripts verificados en github y otras plataformas y te adaptas desde allí? Háganos saber su código favorito y fuentes de script, así como ESP8266 y combinaciones de sensores, en la sección de comentarios a continuación.Ejemplo de código de secuencia de comandos de la aplicación de Google
Configurar PushingBox
Configurar el hardware
Configurar el software
¿Cómo aborda la transferencia de datos de NodeMCU?