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.

editor de guiones

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.

código del editor de secuencias de comandos

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.

  1. Guarde la “URL actual de la aplicación web”.
  2. 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).
  3. Para el campo Ejecutar la aplicación como, agregue el siguiente ling “yo (su dirección de Gmail)”.
  4. 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 = “”; // ID de dispositivo de Pushingbox

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 ();

}

}

Ejemplo de código de secuencia de comandos de la aplicación de Google

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/ / exec? celData = data_here

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, “”);

}

Configurar PushingBox

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.

  1. Cree una cuenta PushingBox, si aún no tiene una.
  2. Use la dirección de Gmail que también está usando para el proyecto de datos del sensor NodeMCU.
  3. Vaya a Mis servicios.
  4. Agregue un nuevo servicio desde la opción Agregar un servicio.
  5. Desplácese hasta la última opción titulada CustomURL, ¡Configure su propio servicio!
  6. Complete los campos que requieren el nombre, la URL y el método.
  7. Para el método, seleccione OBTENER.
  8. Para la URL utilice la URL que comienza con “script.google.com …”, de la URL generada cuando creó la dirección de Google Scrip.
  9. Envíe el servicio y vaya a Mis escenarios.
  10. Ingrese un nombre intuitivo y presione el botón Agregar.
  11. Agregue una acción cuando se le solicite en la pantalla.
  12. Configure el método GET formateando los nombres de cada variable. Este paso será diferente según la cantidad de sensores que esté grabando y lo que estén grabando.

Configurar el hardware

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.

Configurar el software

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:

  1. hhtps: //github.comesp8266/Arduino/tree/master/libraries/ESP8266WiFi
  2. https://learn.adafruit.com/dht

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:

  1. Red Wi Fi.
  2. Contraseña de wifi.
  3. PushingBox ID.

¿Cómo aborda la transferencia de datos de NodeMCU?

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.

Similar Posts

Leave a Reply

Your email address will not be published. Required fields are marked *