Como enviar dados do NodeMCU para o Planilhas Google
Publicados: 2020-08-26Enviar dados de sensores usando firmware NodeMCU pela Internet para uma planilha do Planilhas Google é muito conveniente. Isso pode ser feito por meio de um script do Google e tem a vantagem de não custar nada, ao contrário de muitas alternativas de armazenamento em nuvem.
Para os fins deste artigo, mostraremos um projeto simples para enviar leituras de temperatura usando o ESP8266 e um sensor de temperatura e umidade DHT11.
Configure sua planilha do Google
Primeiro, você desejará criar uma nova planilha. Faça login em sua conta do Google, acesse Meu Drive e abra uma planilha em branco.
Copie a chave de URL da sua planilha. Dê um nome intuitivo à planilha. Vá para o Editor de Scripts, no menu Ferramentas.
Dê um nome ao seu script (novamente, mantenha-o intuitivo, especialmente se estiver fazendo mais de um projeto). Use o script fornecido e copie e cole-o no editor de scripts do Google.
Abaixo da linha de ID da planilha, cole a chave de URL da planilha salva.
Salve o script e implante-o como um aplicativo. Você encontrará esta opção no menu Publicar. Configure os parâmetros de implantação para garantir que a planilha funcionará corretamente.
- Salve o “URL atual do aplicativo da web”.
- Salve a versão do projeto como nova para todas as revisões do script (isso permite que o Google atualize quaisquer revisões que você possa fazer no futuro).
- Para o campo Executar o aplicativo como, adicione o seguinte ling “eu (seu endereço do Gmail)”.
- Para o campo Quem tem acesso ao aplicativo adicione a seguinte linha “qualquer pessoa, mesmo anônima”.
Código para configuração do sensor ESP8266 e DHT11
Isto é o que você deve carregar ao conectar seu ESP8266 ao sensor DHT11:
#incluir “ESP8266WiFi.h”
#incluir “DHT.h”
#define DHTPIN 2 // a qual pino digital você está conectado
//pin2 para D4 na placa esp
// Remova o comentário no código do tipo de sensor DHT que você está usando.
#define DHTTYPE DHT11 // DHT 11
//#define DHTTYPE DHT21 // DHT 21
//#define DHTTYPE DHT22 // DHT 22
DHT dht(DHTPIN,DHTTYPE);
const char WEBSITE[] = “api.pushingbox.com”; //o servidor da API PushingBox
const String devid = “<SEU_Devid_AQUI>”; //ID do dispositivo do Pushingbox
const char* MY_SSID = “<SEU_NOME_WIFI_AQUI”;
const char* MY_PWD = “<YOUR_WIFI_PASSWORD_HERE>”;
configuração nula()
{
Serial.begin(115200);
dht.begin();
Serial.print(“Conectando a “+*MY_SSID);
WiFi.begin(MY_SSID, MY_PWD);
Serial.println(“entrando em wl connect”);
while (WiFi.status() != WL_CONNECTED) //não conectado,..esperando para conectar
{
atraso(1000);
Serial.print(“.”);
}
Serial.println(“wl conectado”);
Serial.println(“”);
Serial.println(“Credenciais aceitas! Conectado ao wifi\n “);
Serial.println(“”);
}
loop vazio()
{
//Permitir que mais tempo passe entre as leituras
//preenchimento da planilha do Google, para evitar ultrapassar o número de solicitações gratuitas do PushingBox
atraso(10000); //10 segundos, (taxa de amostragem vs. cota de chamada de serviço)
float umidadeData = dht.readHumidity();
// Ler a temperatura como Celsius (o padrão)
float celData = dht.readTemperature();
// Ler a temperatura como Fahrenheit (isFahrenheit = true)
float fehrData = dht.readTemperature(true);
// Verifica se há leituras com falha, saia mais cedo (para tentar novamente).
if (isnan(dados de umidade) || isnan(celData) || isnan(fehrData))
{
Serial.println(“Falha ao ler o sensor DHT!”);
retornar;
}
// Calcula o índice de calor em Celsius (isFahreheit = false)
float hicData = dht.computeHeatIndex(celData, umidadeData, false);
// Calcula o índice de calor em Fahrenheit (o padrão)
float hifData = dht.computeHeatIndex(fehrData, umidadeData);
//Imprime no monitor serial ou terminal de sua escolha a 115200 Baud
Serial.print(“Umidade: “);
Serial.print (dados de umidade);
Serial.print(”%\t”);
Serial.print(“Temperatura em Cel: “);
Serial.print(celData);
Serial.print(” *C “);
Serial.print(“Temperatura em Fehr: “);
Serial.print(fehrData);
Serial.print(”*F\t”);
Serial.print(“Índice de calor em Cel: “);
Serial.print(hicData);
Serial.print(” *C “);
Serial.print(“Índice de calor em Fehr: “);
Serial.print(hifData);
Serial.print(”*F\n”);
Cliente WiFiClient; //Instancia objeto WiFi
//Iniciar ou serviço API usando nosso cliente WiFi através do PushingBox
if (cliente.connect(SITE, 80))
{
cliente.print(“GET /pusingbox?devid=” + devid
+ “&humidityData=” + (String) umidadeData
+ “&celData=” + (String) celData
+ “&fehrData=” + (String) fehrData
+ “&hicData=” + (String)hicData
+ “&hifData=” + (String) hifData
);
cliente.println(”HTTP/1.1″);
cliente.print(“Host: “);
cliente.println(SITE);
client.println(“User-Agent: ESP8266/1.0”);
client.println(“Conexão: fechar”);
cliente.println();
}
}
Exemplo de código de script do Google App
Aqui está o código que você precisa para criar um script legível para a transferência de dados do sensor.
Consulta de solicitação GET:
https://script.google.com/macros/s/<seu gscriptID>/exec?celData=data_here
HumidityDat, celData,fehrData,hicData, hifData (variáveis GScript, PushingBox e Arduino na ordem em que você deve escrevê-las)
Função doGet(e) {
Logger.log ( JSON.stringify(e) ); // isto é para visualizar os parâmetros
Var resultado = 'Ok';
If (e.parâmetro == indefinido) {
Resultado = 'Sem parâmetros';
}
Outro {
Var id= '<URL da sua planilha\;
Planilha Var = SpreadsheetApp.openById(id).getActivesheet();
Var novaRow = planilha.getLastRow() + 1;
Var linhaDados = [];
//var waktu = new Date()'
rowData[0] = new Data(); //para carimbo de data/hora na coluna A
for (var parâmetro em e.parameter) {
logger.log('no loop for, param='+param);
var valor = stripQuotes(e.parameter[param]);
mudar (parâmetro) {
case 'humidityData': //Parâmetro
rowData[1] = valor; //Valor na coluna B
quebrar;
case 'celData';
rowData[2] = valor;
quebrar;
caso 'fehrData':
rowData[3] = valor;
quebrar;
caso 'hicData':
rowData[4] = valor;
quebrar;
caso 'hifData':
rowData[5] = valor;
quebrar;
padrão:
resultado = “parâmetro não suportado”;
}
Logger.log(JSON.stringify(rowData));
Var newRange = sheet.getRange(newRow, 1, 1, rowData.length);
newRange.setValues([rowData]);
}
Retornar ContentService.createTextOutput(resultado);
}
Função stripQuotes(valor){
Retornar valor.replace(/^[“']|['|]$/g, “”);
}
Configurar PushingBox
Este serviço atua como intermediário entre os dados do sensor DHT e o Planilhas Google. Usando a API PushingBox, você pode transformar dados transmitidos por HTTP em dados HTTPS criptografados que o Google reconhece.
Observe que o PushingBox limita você a 1.000 solicitações por dia. No entanto, isso elimina muito do trabalho pesado e da experiência necessários para criar seu próprio algoritmo de criptografia ao qual o Google responderá.
- Crie uma conta PushingBox, se ainda não tiver uma.
- Use o endereço do Gmail que você também está usando para o projeto de dados do sensor NodeMCU.
- Vá para Meus serviços.
- Adicione um novo serviço na opção Adicionar um serviço.
- Role até a última opção intitulada CustomURL, defina seu próprio serviço!
- Preencha os campos que exigem nome, URL e método.
- Para o método, selecione GET.
- Para o URL use o URL que começa com “script.google.com…”, do URL gerado quando você criou o endereço do Google Scrip.
- Envie o serviço e vá para Meus Cenários.
- Digite um nome intuitivo e clique no botão adicionar.
- Adicione uma ação quando solicitado na tela.
- Configure o método GET formatando os nomes de cada variável. Esta etapa será diferente dependendo de quantos sensores você está gravando e do que eles estão gravando.
Configurando o Hardware
Se você estiver usando um sensor DHT com seu ESP8266, alimente a unidade com 5 V em vez de 3,3 V. Uma tensão mais baixa pode não fornecer leituras corretas.
Conecte os pinos 2 e D4 em seu ESP8266.
Configurando o Software
Esta configuração funciona com Arduino IDE, de preferência uma versão mais recente que 1.6.4. Isso também significa que você precisa baixar algumas bibliotecas em seu sistema.
As bibliotecas podem ser encontradas nos seguintes links:
- hhtps://github.comesp8266/Arduino/tree/master/libraries/ESP8266WiFi
- https://learn.adafruit.com/dht
A próxima etapa envolve fazer upload do esboço do Arduino e configurá-lo para seu projeto e dispositivo. Existem apenas três campos relevantes que você deve formatar e personalizar para o seu projeto:
- Rede Wi-Fi.
- Senha do wifi.
- ID da PushBox.
Como você aborda a transferência de dados NodeMCU?
Existem mais maneiras de fazer isso e vários tipos de sensores que você pode usar para transferir dados usando um ESP8266 com firmware NodeMCU diretamente para o Planilhas Google ou outras plataformas em nuvem.
Você prefere escrever seus próprios scripts e códigos para personalizar seus projetos ou pesquisa online por scripts verificados no github e outras plataformas e adapta a partir daí? Deixe-nos saber suas fontes favoritas de código e script, bem como ESP8266 e combinações de sensores, na seção de comentários abaixo.