Banco de dados com Google planilhas – ESP
O Google planilhas é um “Excel online”, que te permite criar tabelas e coisas do tipo, online, sem a necessidade de instalar no seu computador. Podemos compartilhar essa tabela para outras pessoas visualizarem ou edita-las. Nesse tutorial aprenderemos como usar o Google Planilhas para criar um banco de dados online, gratuito e simples, visto que não precisamos ter um servidor dedicado à hospedar o serviço. Esta primeira parte será ensinado apenas a enviar os dados usando um ESP.
[toc]
Banco de dados
Banco de dados é um conjunto de dados, normalmente relacionados entre si, como por exemplo: dados de clientes, LOG de temperaturas e coisas similares. Normalmente são dados organizados por colunas e linhas (matriz/tabela) para fácil entendimento por nós.
Poderíamos usar MySQL ou Firebase, que nos permite criar banco de dados de forma eficiente e confiável, entretanto, é preciso ter um servidor apenas para hospedar seu banco de dados sempre disponível.
Você pode ler mais sobre Banco de dados e o uso do MySQL no tutorial: Arduino e MySQL – Registrando temperatura em um banco de dados usando o Shield Ethernet W5100
O Google planilhas oferece uma solução simples e gratuita para o armazenamento dos dados coletados. Podemos criar essas tabelas em conjunto do Google Forms, para enviar os dados dos nossos sensores, clientes e etc., sem a necessidade de um computador ou servidor pago hospedando o banco de dados, já que a Google se encarrega totalmente do serviço.
Obtendo os recursos necessários
Para usar esse incrível recurso precisaremos de uma conta no Google, e com ela criaremos dois arquivos, um de Planilha e outro Form.
Iremos através do formulário, enviar dados para a planilha (os dados do formulário irão para a planilha).
Passo 1-) Vá ao seu Google Drive e crie uma Planilha.
Passo 2-) Altere o nome da sua planilha para ser de fácil identificação nos próximos passos.
Passo 3-) Volte no Drive e crie um formulário.
Passo 4-) Altere o titulo do seu formulário para o desejado, e configure as perguntas.
Na planilha, os títulos das perguntas serão as colunas, e as respostas serão as linhas. Usaremos a opção “Resposta curta”, que permite adicionar números e textos pequenos.
Passo 5-) Vá em “Respostas”, vamos atribuir o formulário à planilha criada anteriormente. Clique nas “três bolinhas”, e “Selecionar destino da resposta”.
Passo 6-) Selecione a planilha desejada e estará pronto para receber nossos dados.
Agora, nosso formulário esta pronto para receber os dados e automaticamente transmitir para a planilha.
Para testar o formulário, clique no “Olho” ao canto superior direito, para abrir o link do formulário.
Após digitar o numero e clicar em “Enviar”, será mostrado o aviso que a resposta foi registrada.
Agora, volte à sua Planilha, e veja que os resultados já estão aparecendo!
A coluna “Carimbo de data/hora” é preenchida automaticamente pelo sistema do Google, poupando imenso trabalho e requisitos do nosso sistema, dispensando até mesmo RTCs. A outra coluna “Numero” é o titulo da nossa pergunta, e a linha é a resposta que inseri.
Agora que aprendemos a utilizar o formulário em conjunto com a planilha, precisamos apenas integrar no Microcontrolador.
Mãos à obra
Componentes necessários
- 1x ESP8266 ou ESP32 (Usaremos o NodeMCU 8266).
Conheça um pouco mais sobre ESP:
Código do projeto
Atenção: Não copie e cole o código inteiro, precisamos fazer algumas alterações no link utilizado. Será explicado logo abaixo em “Entendendo a fundo”.
Caso esteja usando o ESP32, altere as bibliotecas removendo a ESP8266WiFi.h e incluindo as bibliotecas WiFi.h e WiFiClientSecure.h
Alguns usuário relatam erro com as versões mais novas do core esp8266 (quando você instala pelo menu (ferramentas > placa > gerenciar placas). A solução é instalar e usar a versão 2.4.0
// Código Banco de dados com Google planilhas com ESP - Vida de Silício #include <ESP8266WiFi.h> // Alterar a linha anterior por #include <WiFi.h> se estiver usando ESP32 // #include <WiFiClientSecure.h> // Incluir esta biblioteca se estiver usando ESP32 WiFiClientSecure client;//Cria um cliente seguro (para ter acesso ao HTTPS) String textFix = "GET /forms/d/e/1FAIpQLSdm6M_0mTVx_LKHLB1J3u_hjaag_hBtMfDHQlTIKe0EoatfsQ/formResponse?ifq&entry.717212213="; //Essa String sera uma auxiliar contendo o link utilizado pelo GET, para nao precisar ficar re-escrevendo toda hora void setup() { Serial.begin(115200);//Inicia a comunicacao serial WiFi.mode(WIFI_STA);//Habilita o modo estaçao WiFi.begin("SUA REDE", "SUA SENHA");//Conecta na rede delay(2000);//Espera um tempo para se conectar no WiFi } void loop() { if (client.connect("docs.google.com", 443) == 1)//Tenta se conectar ao servidor do Google docs na porta 443 (HTTPS) { String toSend = textFix;//Atribuimos a String auxiliar na nova String que sera enviada toSend += random(0, 501);//Adicionamos um valor aleatorio toSend += "&submit=Submit HTTP/1.1";//Completamos o metodo GET para nosso formulario. client.println(toSend);//Enviamos o GET ao servidor- client.println("Host: docs.google.com");//- client.println();//- client.stop();//Encerramos a conexao com o servidor Serial.println("Dados enviados.");//Mostra no monitor que foi enviado } else { Serial.println("Erro ao se conectar");//Se nao for possivel conectar no servidor, ira avisar no monitor. } delay(5000); }
Colocando para funcionar
Após a editar o código com as suas informações, tudo irá funcionar corretamente. Veja como ficou o nosso, enviando valores aleatórios para nossa planilha a cada ~5 Segundos.
Entendendo a fundo
Precisamos fazer algumas alterações para o funcionamento do sistema com sua planilha. Sem isso, você irá enviar dados para nossa planilha de teste! (hehe)
Passo 1-) Abra seu formulário (Figura 7).
Passo 2-) Copie todo o link entre “docs.google.com” e “/viewform”. Salve isso em algum lugar, já iremos utilizar.
O nosso ficou “/forms/d/e/1FAIpQLSdm6M_0mTVx_LKHLB1J3u_hjaag_hBtMfDHQlTIKe0EoatfsQ”.
Passo 3-) Clique com o direito no “Input Text Box” e “inspecionar elemento”.
Passo 4-) Agora, iremos pegar o nome desse Input Text Box.
O nosso é “entry.717212213”.
Agora, devemos alterar esses dois valores no código, pois são os valores da sua planilha, e no código demonstrado de exemplo, foi utilizado nossos dados.
Obs: Altere apenas as partes destacadas, o restante é necessário para o correto funcionamento.
Atualização por contribuição do leitor Anselmo:
Caso tenha dificuldade em encontrar os entry, bastar seguir os seguintes passos:
-
- Clique no formulário com o botão direito do mouse e selecione “Exibir código fonte da pagina” (Ctrl+U);
- Agora pesquise pelo nome do campo inserido no formulário usando a ferramenta de pesquisa do navegador (Ctrl+F);
- No final do código vai encontra algo parecido com: FB_PUBLIC_LOAD_DATA_ = [null,[null,[[490158642,”nome do campo“,null,0,[[12345678,null,0,null,[[1,9,[“”];
- O entry vai ser o numero após o colchete “12345678”,
- Inclua “entry.” antes do número, fincando “entry.12345678”;
- Se você tiver outros campos, os outros entry do formulário vão estar na sequencia.
Exemplo: Campo do formulário: Teste var 1
-
- Procure por “Teste var” (Ctrl+F);
- No final do código vai encontra algo parecido com: “teste var 1”,null,0,[[278629525,null,0,null,[[1,9,[“”]
- Copie o número após o colchete “278629525”
- basta agora incluir “entry.” antes do número , ficando “entry.278629525”
Passo 5-) Vá no começo do código e altere esta parte destacada, pelo que você copiou no item 2.
Esta parte é o “ID/KEY” do seu formulário, cada formulário tem o seu.
Passo 6-) Nessa mesma parte do código, altere essa outra parte destacada, pelo valor copiado no item 4.
Se você tiver mais de uma entrada para dados, a String ficaria por exemplo:
“GET /forms/d/e/1FAIpQLSdm6M_0mTVx_LKHLB1J3u_hjaag_hBtMfDHQlTIKe0EoatfsQ/formResponse?ifq&entry.717212213=123&entry.312212717=1234“
Os dados em negrito são os dados que você adicionaria, sendo de sensores, temperatura e etc.
Se você quiser testar com nossa planilha, sinta-se livre. Entretanto, é permitido apenas a visualização. Link da nossa planilha.
Software
– String auxiliar
String textFix = "GET /forms/d/e/1FAIpQLSdm6M_0mTVx_LKHLB1J3u_hjaag_hBtMfDHQlTIKe0EoatfsQ/formResponse?ifq&entry.717212213=";
Essa String textFix é uma auxiliar para nao precisar ficar reescrevendo toda hora, desde que essa parte é FIXA. O único valor que iremos alterar é após o igual “=”, que será o valor enviado à planilha.
– Função WiFiClient::connect()
if (client.connect("docs.google.com", 443) == 1)
Precisamos antes de enviar o método GET, se conectar no servidor. Essa função se conecta à URL (IP), na porta desejada.
– Corpo restante do GET
String toSend = textFix;//Atribuimos a String auxiliar na nova String que sera enviada toSend += random(0, 501);//Adicionamos um valor aleatorio toSend += "&submit=Submit HTTP/1.1";//Completamos o metodo GET para nosso formulario. client.println(toSend);//Enviamos o GET ao servidor- client.println("Host: docs.google.com");//- client.println();//- client.stop();//Encerramos a conexao com o servidor Serial.println("Dados enviados.");//Mostra no monitor que foi enviado
Após a conexão com o servidor, adicionamos um valor aleatório na String final à ser enviada, e também terminamos o restante do necessário a ser enviado.
Desafio
Foi demonstrado apenas o envio de uma variável para a planilha, entretanto em qualquer projeto pode ser necessário o envio de diversas. Faça as alterações necessárias, adicionando os novos “Input Text Box” e tente enviar varias variáveis para sua planilha!
Fechamento
Em diversos projetos precisamos enviar dados ou guarda-los para analise, e um banco de dados como SQL pode ser desnecessário, uma vez que precisamos de um servidor para hospedar o banco de dados; com este método é possível facilmente criar seu banco de dados online, compartilhar com amigos e etc.
Na parte 1 foi mostrado apenas o procedimento para envio dos dados, entretanto, podemos precisar pegar valores da tabela para uso. Já a parte 2, você aprenderá como ler os valores da planilha para manipulação de dados ou até criar comandos de controle para o MCU: Lendo dados do Google planilhas com ESP – Banco de dados
Referências
- https://developers.google.com/sheets/api/guides/values
Estudante de Engenharia da Computação pela USC, pretende se aprimorar e fazer a diferença nesta imensa área da tecnologia. Apaixonado por IoT, sistemas embarcados, microcontroladores e integração da computação nos mais diversos fins práticos e didáticos.
127 Comments
Deixe uma pergunta, sugestão ou elogio! Estamos ansiosos para ter ouvir!Cancelar resposta
Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.
Não entendi essa integração do BD (formulario com tabela, ambos do Google).
O Google não tem um BD online semelhante ao MS Access?
O que essa integração faz, não ficou claro pra mim.
Ótimo post, obrigado por compartilhar a informação. Tive alguns problemas para conseguir fazer funcionar. Primeiro, ele não conectava ao servidor, então adicionei a função “client.setInsecure();” dentro do void setup e funcionou, este detalhe foi até mencionado aqui no feed por um colega(a). Aqui tive um segundo problema. Ao funcionar a primeira parte após adicionar a função, o programa enviava os dados mas não aparecia na planilha. O que fiz para resolver este detalhe foi ir até a pagina de criação e edição do formulário, lá terá 3 abas, perguntas, respostas, configurações. Acesse configurações e verifique se a opção “Restringir aos usuários em “seu usuário” e das organizações confiáveis” está desmarcada. Se ela estiver marcada, o programa não terá acesso para responder o formulário com os dados enviados.
Muito bom projeto, porém quando tentei aplicar o código no ESP-32-WROOM-32 não consegui fazer funcionar.
Depois de muita pesquisa e inúmeras falhas consegui chegar ao seguinte código:
*onde há informações que devem ser substituídas para que funcione para você, como mostrado pelo José Morais nos passos de 2 a 6.
Substituir:
/forms/d/e/1FAIpQLSdm6M_0mTVx_LKHLB1J3u_hjaag_hBtMfDHQlTIKe0EoatfsQ
E
entry.717212213
________________________________________________________________________
#include
const char* ssid = “Nome_da_sua_rede”;
const char* password = “Senha_da_sua_rede”;
const char* server = “www.docs.google.com”; // Server URL
String FixText = “GET https://www.docs.google.com/forms/d/e/1FAIpQLSdm6M_0mTVx_LKHLB1J3u_hjaag_hBtMfDHQlTIKe0EoatfsQ/formResponse?ifq&entry.717212213=“;
WiFiClientSecure client;
void setup() {
//Inicialize o serial e espere a porta abrir:
Serial.begin(115200);
delay(100);
Serial.print(“Tentando conectar ao SSID: “);
Serial.println(ssid);
WiFi.begin(ssid, password);
// attempt to connect to Wifi network:
while (WiFi.status() != WL_CONNECTED) {
Serial.print(“.”);
delay(500);
}
Serial.print(“Conectado em “);
Serial.println(ssid);
}
void loop() {
Serial.println(“\nIniciando conexão ao servidor…”);
client.setInsecure(); //skip verification
if (client.connect(server, 443)){
Serial.println(“Conectado ao Servidor!”);
// Construindo o HTTP:
String SendText = FixText;
SendText += random(0, 501);
SendText += ” HTTP/1.0″;
client.println(SendText);
client.println(“Host: http://www.docs.google.com“);
client.println(“Connection: close”);
client.println();
client.stop();
Serial.println(“Desconectado do Servidor!”);
}else{
Serial.println(“Falha ao Conectar!”);
}
delay(3000);
}
Retirei a Biblioteca do seguinte link:
https://github.com/espressif/arduino-esp32/blob/master/libraries/WiFiClientSecure/src/WiFiClientSecure.h
Com ela veio alguns exemplos, dentre eles o WiFiClientInsecure que foi utilizado como base para fazer o código. Mesclei um pouco dos códigos do exemplo com o feito pelo José Morais.
José, bom dia! Quando estou com o esp32 pluggado no usb do computador os dados são enviados perfeitamente, contudo quando ligo a uma fonte externa a planilha não é alimentada. O que pode ser?
José, eu gostaria de separar o carimbo da data e hora em 2 colunas. Isso deve ser feito no script? Tens algum tutorial para tal? No mais, funcionou 100%. Obrigado
Tive que fazer algumas alterações tanto para conexão quanto para alimentar mais dados. Mas gostaria de agradecer.. tudo funcionando perfeitamento. Obrigado
Por favor… Me ajudem:
Fiz o procedimento… esta tudo correto.. dados lidos em um dht11 sendo enviados para a planilha ( ate aqui tudo otimo)
Porem, na planilha os dados de temperatura e umidade ( que sao numericos) estao sendo reconhecidos como Strings.
Verifiquei o codigo ESP e ao inves de fazer concatenacao com um valor de uma variavel que contem leitura do dht11, eu coloquei um valor numerico qq para teste.
O mesmo codigo comecou a enviar entao como numero.
-No codigo ESP:
valores de leituras estao sendo armazenados em variaveis float temperatura e float umidade ( que sao numericas)
Segindo a mesma logica do programa aqui apresentado:
— String toSend = textFix;//Atribuimos a String que contem codigo google planilha
— toSend += temperatura // onde temperatura é uma variavel numerica que recebe dados do dht11
ALGUEM saberia me dizer como proceder para que, na programacao do esp32 esses dados sejam enviados como numeros e nao como string ?
Obrigado .
Para o pessoal que esta tendo dificuldade em encontrar os entry. Basta clicar no formulário com o direito e ir em exibir código fonte da pagina (Ctrl+U), agora pesquise pelo campo inserido no formulário.
Exemplo:
Campo do formulário: Teste 1
Procure por “Teste 1” (Ctrl+F)
No final do código vai encontra algo parecido com isso:
“Teste 1”,null,0,[[12345678,null,1,null,[[1,9,[“”]
o entry vai ser o numero após o colchete “12345678”
basta agora incluir “entry.12345678”
todos os entry do formulário vão estar na sequencia.
Excelente post! Estou tentando encontrar a library 2.4.0 mas não encontro nem pela IDE nem no Google essa versão, poderia passar um link? Está dando “falha ao se conectar”.
Oi, José! Estou tentando realizar este projeto em 2020, mas não ao inspecionar o elemento para obter o campo “name”, citado no passo 4, não encontro o mesmo. Poderia me ajudar, por gentileza? Agradeço desde já!
Testei aqui, faça o seguinte: Quando você clicar para “inspecionar elemento” e abrir o painel com códigos HTML, aperte para buscar palavras (CTRL+SHIFT+F) e busque por “entry”. Vá dando next que você vai encontrar todos entrys, um embaixo do outro (estão na ordem que aparece na tela).
Como faz pra enviar mais de uma variavel
Boa Noite José, Parabéns pelo seu trabalho! Eu segui a metodologia porém não está alimentando a planilha. Estou usando o Esp32 e pelo monitor serial consigo perceber que os dados são enviados. Entretanto na minha planilha eles não chegam. Já verifiquei o endereço e refiz, porém sem resultado. Vc tem ideia do que pode ser? Obrigado.
envio codigo
#include
#include
#include
#include
#include
//forms/d/e/1FAIpQLSeVnuQw-bvBIoyxsLKfY_2h25s1FKrqWt-qMZaan75kgzjfXg //entry.1798549167 entry.1798549167
String textFix = “GET /forms/d/e/1FAIpQLSeVnuQw-bvBIoyxsLKfY_2h25s1FKrqWt-qMZaan75kgzjfXg/formResponse?ifq&entry.1798549167=1234”;
//String textFix = “GET /forms/d/e/1FAIpQLSdm6M_0mTVx_LKHLB1J3u_hjaag_hBtMfDHQlTIKe0EoatfsQ/formResponse?ifq&entry.717212213=”;
//Essa String sera uma auxiliar contendo o link utilizado pelo GET, para nao precisar ficar re-escrevendo toda hora
// Define the MAC Address on your Ethernet Shield => Syntax: Ethernet.begin(mac,IP)
//You can define any MAC address on you
byte mac[] = {0x90, 0xA2, 0xDA, 0x00, 0x23, 0x36};
byte ip[] = {192, 168, 2, 135}; //This is a static IP address
byte dnserver[] = {192, 168, 2, 1}; //This is a static DNS address
byte subnet[] = {255, 255, 255, 0}; //This is a static Sub-network Mask
byte gateway[] = {192, 168, 2, 1}; //This is a static gateway address
EthernetClient client; //define ‘client’ as object
String data;
void setup()
{
// put your setup code here, to run once:
Serial.begin(9600);
if (Ethernet.begin(mac) == 0) {
Serial.println(“Using DHCP,Please use Static IP…”);
Ethernet.begin(mac, ip, dnserver, gateway, subnet);
}
delay(1000);
}
void loop()
{
if (client.connect(“docs.google.com”, 443) == 1)//Tenta se conectar ao servidor do Google docs na porta 443 (HTTPS)
{
String toSend = textFix;//Atribuimos a String auxiliar na nova String que sera enviada
toSend += random(“0, 501”);//Adicionamos um valor aleatorio
toSend += “&submit=Submit HTTP/1.1”;//Completamos o metodo GET para nosso formulario.
client.println(toSend);//Enviamos o GET ao servidor-
client.println(“Host: docs.google.com”);//-
client.println();//-
client.stop();//Encerramos a conexao com o servidor
Serial.println(“Dados enviados.”);//Mostra no monitor que foi enviado
}
else
{
Serial.println(“Erro ao se conectar”);//Se nao for possivel conectar no servidor, ira avisar no monitor.
}
delay(6000);
}
bom dia, obrigado pelo exselente post.
adaptei o codigo a minha necessidade usando um ethernet shild w5100, nao tenho erros, da dados enviados mas no google nao me aparece nada,ja tentei tudo, que pode estar a falhar?
Funcionou. Parabéns a todos que contribuíram com algo para o projeto. O Post do Antônio Vitor foi fundamental.
Bom dia. Obrigado pelo post, a principio não consegui fazer funcionar, pois estava dando “erro ao se conectar”. Depois de pesquisar um pouco vi que o problema poderia ser solucionado adicionando client.setInsecure(); antes do “if”, dessa forma resolveu e consegui enviar os dados para planilha. Espero que possa ajudar os demais que estão com o mesmo problema. Aproveitando… estou enviando os dados do MPU6050, porém uma vez que ela se conecta e começa a enviar os dados começa a ficar muito lento as leituras e os valores ficam muito distantes do verdadeiro, alguém sabe o motivo ?
Mesmo mudando a versão da lib, o código não conecta ao google, e já exibe o resultado “erro ao se conectar”.
Pode ser que o motivo de meu código dar “erro ao conectar” seja a versão da lib?
Bom dia. Parabenizo pelo tutorial simples, direto e didático. E deixo o meu comentário como contribuição e confirmação que fazendo o downgrade da lib do esp8266 para a versão 2.4.0, o tutorial funciona perfeitamente.
Inseri o codigo e todas as alterações necessária e o ESP8266 não insere os dados do random.
Já vinculei como deveria. Algo mais que eu possa verificar?
Boa noite José Morais!
Posso citar em meu TCC seu tutorial?
Obrigado!
Obs.: caso seja autorizado, irei citar no texto Morais (2017), há alguma preferencia?
Opa, que legal Matheus! Pode sim, deste jeito ficou agradável.
Consegui solucionar o erro anterior fazendo downgrade do core do ESP para a varsão 2.3.
Entretanto, um novo problema surgiu.
Ao compilar o programa, o seguinte é escrito no terminal:
Uploading 387088 bytes from /tmp/arduino_build_760006/programrede.ino.bin to flash at 0x00000000
…………………………………………………………………….. [ 21% ]
…………………………………………………………………….. [ 42% ]
…………………………………………………………………….. [ 63% ]
…………………………………………………………………….. [ 84% ]
………………………………………………….. [ 100% ]
Ao completar 100%, no monitor serial são mostradas as tentativas falhas de conexão com o servidor. Testei com duas redes diferentes, em dois PCs diferentes, um com Ubuntu e outro com W10, e tive o mesmo problema em ambos.
Fazendo um parêntese, curiosamente não tive o problema descrito na mensagem anterior no W10, mesmo usando a versão 2.4.
Tens alguma sugestão do que posso fazer, testar?
Poderias também me dizer qual versão do firmware do teu ESP8266?
Cara, primeiramente, parabéns pelo post!
Tentei compilar o teu programa, mas aparace o seguinte log de error:
Arduino: 1.8.10 (Linux), Board: “Generic ESP8266 Module, 80 MHz, Flash, Disabled, All SSL ciphers (most compatible), ck, 26 MHz, 40MHz, DOUT (compatible), 512K (no SPIFFS), 2, nonos-sdk 2.2.1 (legacy), v2 Lower Memory, Disabled, None, Only Sketch, 115200”
Sketch uses 382524 bytes (76%) of program storage space. Maximum is 499696 bytes.
Global variables use 28696 bytes (35%) of dynamic memory, leaving 53224 bytes for local variables. Maximum is 81920 bytes.
esptool.py v2.6
2.6
esptool.py v2.6
Serial port /dev/ttyUSB0
Connecting…….._____….._____….._____….._____….._____….._____…..____Traceback (most recent call last):
File “/home/nikito060195/.arduino15/packages/esp8266/hardware/esp8266/2.5.2/tools/upload.py”, line 25, in
esptool.main(fakeargs)
File “/home/nikito060195/.arduino15/packages/esp8266/hardware/esp8266/2.5.2/tools/esptool/esptool.py”, line 2653, in main
esp.connect(args.before)
File “/home/nikito060195/.arduino15/packages/esp8266/hardware/esp8266/2.5.2/tools/esptool/esptool.py”, line 468, in connect
raise FatalError(‘Failed to connect to %s: %s’ % (self.CHIP_NAME, last_error))
esptool.FatalError: Failed to connect to ESP8266: Timed out waiting for packet header
esptool.FatalError: Failed to connect to ESP8266: Timed out waiting for packet header
_
This report would have more information with
“Show verbose output during compilation”
option enabled in File -> Preferences.
O ESP8266 que usei não obtia comunicação com o PC. Então fiz upload do firmware ESP8266_NONOS_SDK_V1.5.0_15_11_27 e consegui comunicação. Depois disso fiz os procedimentos descritos nesse post, fiz as conexões conforme o post “Conhecendo o ESP8266” e tentei compilar o programa. Foi então que os erros ocorreram.
boa tarde, nao estou conseguindo registrar mais de uma variavel, ja tentei de tudo porem sem sucesso.
String textFix = “GET /forms/d/e/1FAIpQLSfAVj_h9OSoEuPkfzVeZJ-WEtvLLczHtyqQIYXshvWlhO7b5w/formResponse?ifq&entry.451418520=&entry.297453669=”;
toSend += tempF;//Adicionamos um valor aleatorio
toSend += “&submit=Submit HTTP/1.1”;//Completamos o metodo GET para nosso formulario.
no caso iria imprimir duas vriaveis tempC e tempF, porem so consigo registrar uma por vez.
O meu não está armazenando os dados no planilhas. Fiz tudo conforme o tutorial. Diz que os dados estão sendo enviados, mas não estão sendo armazenados.
Estou tentando adaptar esse tutorial para envio de dados para o Google Planilhas utilizando o Google Formulários mas não consigo conectar o modulo ESP à rede e mandar dois dados de temperatura e umidade, pode me ajudar?
Primeiramente parabéns pelo projeto! Eu estou com um NodeMCU V3 (ESP8266) e infelizmente não consegui enviar para meu Google Forms (quero enviar uns dados climatológicos do sensor BME280).
A Placa já está na versão 2.5.2. Quando voltei para a versão 2.4 as coisas não ficaram lá muito boas não.
Alguma dica? Gostaria muito de enviar meus dados para o Google Formulário/Google Planilhas.
Na versão 2.4, os problemas relacionados diretamente ao Core do ESP são resolvido, então se algo continua bugado, infelizmente é do seu código. Você vai precisar analisa-lo mais atentamente!
José Morais você sabe se existe um limite de variáveis? Eu tentei com 4 e ele só apresenta 2 variáveis na planilha, sendo que a terceira variável aparece vez ou outra e a quarta variável nem aparece.
O Google Planilhas tem limite de uso em 400mil células com até 18278 colunas. Utilizando o formulário, que envia uma variável por coluna, podemos enviar até 18278 variáveis por pacote, entretanto, não podemos esquecer do limite de 400mil células que com 18278 colunas dariam ~21 linhas.
Só para exemplificar, em casa tenho um projeto rodando a quase 2 anos e utiliza 8 colunas, o que me da um limite de 50mil linhas (400000/8).
Parabéns José Morais,
Excelente tutorial.
Acompanhei seus dois posts e consegui reproduzir aqui com sucesso.
Tenho uma pergunta: é possível gravar os dados sempre nas mesmas células (atualização de valores numa mesma célula), pois não tenho interesse em ter um histórico de dados. Apenas outro ESP8266 irá ler o valor a cada momento.
Pergunto porque vi que o IFTTT faz isso, mas tenho interesse de gravar dados sem o serviço do IFTTT.
Antecipadamente agradeço sua atenção.
Abraços,
Sim, mas com este método pelo Google Forms não.
Quase da mesma forma que efetua-se a leitura de células pela planilha (veja a parte 2 deste post), também é possível gravar dados em células específicas. Só é um pouquinho mais complicado e talvez não tenha a data salva automaticamente (creio que o Forms faça isso).
Funcionou usando o core ESP8266 na versão mais antiga 2.4.0.
Muito obrigado pela ajuda!
Abraço!
Excelente tutorial! Funcionou perfeitamente em um ESP32, usando a biblioteca WiFi.h.
Mas não consegui fazer funcionar em um ESP-01, usando a biblioteca ESP8266WiFi.h
Testei o seu código na íntegra, o código que escrevi para o ESP32 (que está funcionando) e também uma versão simplificada do seu código (segue adiante)
#include // esp01
//#include // esp32
//#include // comentar esta linha não fez diferença
WiFiClientSecure client;
void setup()
{
Serial.begin(9600);
WiFi.mode(WIFI_STA);
WiFi.begin(“SSID”, “senha”);
delay(2000);
}
void loop()
{
Serial.println(client.connect(“docs.google.com”, 443));
delay(5000);
}
Em todas as versoẽs dos códigos que testei a função client.connect(“docs.google.com”, 443) está retornando o valor 0.
Usando o ESP32 a mesma função retorna 1, como esperado. Exceto pelo código simplificado que está retornando 1 algumas vezes depois do boot e depois de alguns segundos, só retorna zeros.
Você tem alguma ideia do que possa estar acontecendo quando usamos o ESP01?
Desde já, agradeço pela ajuda
Abraço!
Cícero
Acabei de perceber que as bibliotecas foram omitidas do post
a primeira era ESP8266WiFI.h
depois WiFi.h
e, por último, WiFiClientSecure.h
Tentei o mesmo código em um Wemos D1 e continuei com o mesmo problema.
Já no ESP32 eu obtenho a resposta 1 cinco vezes e depois sempre 0.
Isto acontece mesmo com intervalos maiores entre os loops.
Alguma ideia?
Obrigado!
Achei excelente esse tutorial, eu peguei um projeto e enviei a informação do sensor de temperatura para a planilha. Mas para o meu projeto, apesar de já ser inserida a data e hora que o dado é inserido na planilha, preciso enviar a hora do envio, por uma questão de confirmar o tempo, para sugerir trabalhar com dados de precisão em um Trabalho de Conclusão de Curso. Estou com dúvida para inserir a hora no formulário, pois não identifiquei exatamente qual seria o código para HORA na inspeção do elemento, como foi para Resposta Curta, tem alguma sugestão?
Desde já agradeço!
Atenciosamente,
Eduardo
Creio que a resposta curta também permita STRING, assim você por enviar sua data. Se não, teste os outros tipos de campos…
Obrigado, eu encontrei o “entry” da hora, como deu erro, eu tentei com String, e entendi a dinâmica, tanto que inserindo toda a linha de comando no navegador, ele apresenta a tela no formulário, com os dados enviados e acrescenta as informações na planilha. Mas no código está havendo algum detalhe que ele apresenta a informação “Erro ao se conectar”. Quebrar a cabeça aqui…
Alguma atualização que eu fiz, e não consigo identificar qual é, não está efetuando a conexão “client.connect(“docs.google.com”, 443) == 1)”, sempre aparece a mensagem “Erro ao se conectar”, mesmo se conectando à Internet, enviando ao informação para um aplicativo de celular, mas não se conecta ao “docs.google.com”. Refiz o tutorial, colocando apenas o seu código sugerido, com uma nova planilha e formulário e continua o erro. Já viu algo parecido? Alguma sugestão?
Desde já agradeço.
Atenciosamente,
Eduardo
Testei semana passada e esta funcionando, certifique-se que seu esp esta realmente conectado na internet (ping algum host, ou qualquer coisa que garanta uma conexão). Também não adianta testar conexão local com um aplicativo por exemplo, precisa testar um host externo
Primeiramente agradeço a atenção, a conexão à Internet está ok, pois está enviando os dados para o Blynk, aplicativo que configurei para receber a temperatura.
Fiz uma nova instalação do zero em outra máquina, para descartar possíveis problemas na minha máquina que estava compilando para carregar para a placa e infelizmente continua sem enviar os dados. Estou intrigado, pois estava funcionando muito bem anterior a este problema.
Obrigado.
Me chame no whats/telegram (14) 998202683
estou tentando mandar para a planilha a para o mycloudmqtt, sabe como fazer? tá dando conflito pois no código tem 2 client
A parte do código que faz a validação da conexão ao site não funciona mais, alguém tem alguma sugestão de como corrigir?
Boa noite, tudo bem?
Tenho duas duvidas, caso puder responder ficaria muito grato.
*Caso queira usar o ESP32 NODEMCU a alteração seria somente no #include ?
*Estou querendo entrar com valores de temperatura obtidos por um sensor, a minha programação será realizada em cima dessa programação abaixo? Tem alguma linha da programação que não pode ser retirada?
void loop()
{
if (client.connect(“docs.google.com”, 443) == 1)//Tenta se conectar ao servidor do Google docs na porta 443 (HTTPS)
{
String toSend = textFix;//Atribuimos a String auxiliar na nova String que sera enviada
toSend += random(0, 501);//Adicionamos um valor aleatorio
toSend += “&submit=Submit HTTP/1.1”;//Completamos o metodo GET para nosso formulario.
client.println(toSend);//Enviamos o GET ao servidor-
client.println(“Host: docs.google.com”);//-
client.println();//-
client.stop();//Encerramos a conexao com o servidor
Serial.println(“Dados enviados.”);//Mostra no monitor que foi enviado
}
else
{
Serial.println(“Erro ao se conectar”);//Se nao for possivel conectar no servidor, ira avisar no monitor.
}
delay(5000);
}
Muito Obrigado.
Creio que sim, troque a “ESP8266WiFi.h” por “WiFi.h” (a lib de wifi do esp32)
Se eu colocar o “WiFi.h” dá erro nessa linha
*WiFiClientSecure client;//Cria um cliente seguro (para ter acesso ao HTTPS)*
Porem se eu colocar #include “WiFiClientSecure.h” a verificação dá OK!
Porem na hora de carregar o programa aparece essa mensagem e a programação não funciona:
Writing at 0x0000e000… (100 %)
Wrote 8192 bytes (47 compressed) at 0x0000e000 in 0.0 seconds (effective 5461.3 kbit/s)…
Hash of data verified.
Compressed 17968 bytes to 11766…
Writing at 0x00001000… (100 %)
Wrote 17968 bytes (11766 compressed) at 0x00001000 in 0.1 seconds (effective 977.8 kbit/s)…
Hash of data verified.
Compressed 883056 bytes to 496669…
Writing at 0x00010000… (3 %)
Writing at 0x00014000… (6 %)
Writing at 0x00018000… (9 %)
Writing at 0x0001c000… (12 %)
Writing at 0x00020000… (16 %)
Writing at 0x00024000… (19 %)
Writing at 0x00028000… (22 %)
Writing at 0x0002c000… (25 %)
Writing at 0x00030000… (29 %)
Writing at 0x00034000… (32 %)
Writing at 0x00038000… (35 %)
Writing at 0x0003c000… (38 %)
Writing at 0x00040000… (41 %)
Writing at 0x00044000… (45 %)
Writing at 0x00048000… (48 %)
Writing at 0x0004c000… (51 %)
Writing at 0x00050000… (54 %)
Writing at 0x00054000… (58 %)
Writing at 0x00058000… (61 %)
Writing at 0x0005c000… (64 %)
Writing at 0x00060000… (67 %)
Writing at 0x00064000… (70 %)
Writing at 0x00068000… (74 %)
Writing at 0x0006c000… (77 %)
Writing at 0x00070000… (80 %)
Writing at 0x00074000… (83 %)
Writing at 0x00078000… (87 %)
Writing at 0x0007c000… (90 %)
Writing at 0x00080000… (93 %)
Writing at 0x00084000… (96 %)
Writing at 0x00088000… (100 %)
Wrote 883056 bytes (496669 compressed) at 0x00010000 in 7.6 seconds (effective 932.8 kbit/s)…
Hash of data verified.
Compressed 3072 bytes to 144…
Writing at 0x00008000… (100 %)
Wrote 3072 bytes (144 compressed) at 0x00008000 in 0.0 seconds (effective 1890.5 kbit/s)…
Hash of data verified.
Leaving…
Hard resetting via RTS pin…
Há alguma ideia para solução?
Tentei segurar o Boot porem não deu certo.
P.S.: segurar o boot deu certo no exemplo Blink.
Mas não deu nenhum problema nesse log…
Porem não está comunicando, vou testar criar uma nova planilha no google forms.
No serial monitor está dando a mensagem de erro ao se conectar, sabe qual pode ser o possível erro?
Há inúmeros problemas, mas certifique-se que o ESP esta conectando no seu roteador. Verifique por exemplo se sua rede tem IP FIXO ou DHCP……..
Muito bom seu tutorial! Tentei reproduzi-lo hoje porem está dando “erro ao se conectar”
Segue meu get
GET /forms/d/e/1FAIpQLSfOUqyHLA8EnqwhwSXovAK5voHveKffvbecouEpjoJLtfuPFw/formResponse?ifq&entry.1383633678=
Pode me ajudar??
Olá Ery,
Estou tendo este mesmo problema, independente do GET.
Obrigado.
Muito bem explicado e ilustrado.
Continue com o ótimo trabalho!
bom dia estou testando esse codigo para implementar em um projeto, o esp-01 se conecta ao wifi mas nao esta conectando ao servidor do Google docs na porta 443 (HTTPS) na parte do loop sempre vai para o “Erro ao se conectar” e eo mesmo codigo ainda nao modifiquei, pode me ajuda a resolver
boa tarde parabens pelo projeto. teria com enviar dados via serial monitor para alimentar a planilha? pode dizer como?
Tem sim, basta usar o Serial.read() para ler o dado e jogar isso na planilha como já feito.
Boa tarde, tudo bem?
Se o limite de linhas da planilha (192.307 no total) acabar, ele automaticamente já passa para a próxima coluna? Ou para de registrar ?
O motivo da pergunta é que estou iniciando um projeto e irie precisar de “1.016.064 linhas” no total de 7 dias, para ter histórico de uma grandeza.
Tem a possibilidade também de fazer “145.152” linhas por dia e fechar com 7 colunas, porem será necessário alterar a programação, né?
Fico no aguardo,
Grande Abraço.
O google planilhas só aceita no maximo 400k células, você esta praticamente usando 3x mais e não vai funcionar. Não, ele nao passaria pois o limite são 400k células, independente de ser coluna ou linha, ele iria até o fim na mesma coluna.
Pode fazer um contador no mcu para trocar (o link) para outra planilha quando chegar em 400k de envios. Ainda sim isso parece trabalho pra algum banco de dados mesmo o contador para trocar o link seja simples…
Bom dia.
Estou tentando, porem utilizando a biblioteca WiFi.h. Meu código esta assim. alterei todos os valores da planilha. no monitor serial informa que a mensagem foi enviada, porem não estou recebendo na planilha.
Poderia me ajudar?
#include
String textFix = “GET /forms/d/e/1FAIpQLSd4fMw5vGUsOSoqFFX4SAdmLSYbQs9uzZfBe_JRord3fr7pmA/formResponse?ifq&entry.1384445643=”;
//Essa String sera uma auxiliar contendo o link utilizado pelo GET, para nao precisar ficar re-escrevendo toda hora
const char* ssid = “Mi Phone”;
const char* password = “abc123456”;
WiFiClient client;
void setup()
{
Serial.begin(115200);//Inicia a comunicacao serial
//connect to WiFi
Serial.printf(“Connecting to %s “, ssid);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(“.”);
}
Serial.println(” CONNECTED”);
}
void loop()
{
if (client.connect(“docs.google.com”, 443) == 1)//Tenta se conectar ao servidor do Google docs na porta 443 (HTTPS)
{
String toSend = textFix;//Atribuimos a String auxiliar na nova String que sera enviada
toSend += random(0, 501);//Adicionamos um valor aleatorio
toSend += “&submit=Submit HTTP/1.1”;//Completamos o metodo GET para nosso formulario.
client.println(toSend);//Enviamos o GET ao servidor-
client.println(“Host: docs.google.com”);//-
client.println();//-
client.stop();//Encerramos a conexao com o servidor
Serial.println(“Dados enviados.”);//Mostra no monitor que foi enviado
}
else
{
Serial.println(“Erro ao se conectar”);//Se nao for possivel conectar no servidor, ira avisar no monitor.
}
delay(5000);
}
Boa noite José, tudo bem?
Segui todos os seus passos, muito bem explicado inclusive, está de parabéns, porém, não funcionou. Na programação do ESP está somente entrando na parte do else e imprimindo “erro ao se conectar”
Já conferi a conexão com o Wi-Fi pelo roteador e ele está conectando certinho, parece que algo não está funcionando na parte do formulário e da planilha. Inclusive testei com a sua também, e o erro persistiu.
Alguma ideia de como resolver?
Olá José Morais, segui todo o tutorial e funcionou, porém os dados não estão chegando na planilha. Muitas pessoas estão com esse mesmo problema, tem alguma dica pra gente resolver isso?
Abraço e parabéns!
Acho estranho, sempre funcionou e comigo funciona a +1 ano num item aqui em casa… Verifique a conexão do ESP à internet e também teste o envio manual dos dados via formulário à planilha (entre no formulário e digite algo pra ver se aparece na planilha).
Boa tarde José Morais, tudo bem com voce?
Bom, eu estou fazendo um projeto para meu tcc e resolvi tentar aprender a programar para o arduino, porém ao inves de comprar um arduino eu comprei o ESP32. Tentei usar o codigo que voce nos ensinou porem no meu caso os dados não estão sendo enviados para a planilha, tenho que fazer mais configurações alem de chamar a WiFI.h,e colocar meus dados? Estou postando o inicio do codigo, por favor me de uma luz…srrss
Desde já agradeço.
#include
WiFiClient client;//Cria o objeto cliente.
String textFix = “GET /forms/d/e/1FAIpQLSd0Q-wccdJoQSdXaUrwk6ETatZlpUN2G4dZxvfuXnjd6trnpA/formResponse?ifq&entry.1732753565= “;
//Essa String sera uma auxiliar contendo o link utilizado pelo GET, para nao precisar ficar re-escrevendo toda hora
O Esp8266-01 possui entrada analógica ? gostaria de enviar um valor de tensão a cada 5seg mas não estou conseguindo
ESP8266 em si tem, mas na versão 01 não é disponibilizada por padrão. Você pode tentar puxar um fiozinho direto do CI do ESP8266, mas é mais fácil comprar outro modelo ou o ESP32.
Boa noite José Morais, muito bom o seu codigo e seu tutorial, obrigado por compartilhar. Entao eu consegui fazer com que o codigo funcionasse, porem no monitor serial mostra que esta enviando os dados, mas nenhum dado esta sendo gravado na planilha. O que eu posso ter feito errado?
Desde ja agradeço.
Olá parabéns, gostaria de enviar um dado digital via wifi para a planilha captado pelo arduino há como ?
Claro, é só enviar o dado do Arduino para o ESP atraves da Serial, I2C, SPI, etc. Por fim, o ESP envia esse dado pra planilha.
Parabéns pelo trabalho e didática.
Estou com a seguinte dificuldade: Mesmo colocando no FORMULÁRIO -> parágrafo a célula não aceita do ESP o envio da string com 2 palavras tipo ” CASA CHEIA” tendo que enviar a string como
“CASA_CHEIA”. Tens um esclarecimento sobre isso a fornecer? Grato e sucesso aí.
parabéns José Morais
show deu certo aqui
Ótimo tutorial, parabéns. Estou me baseando em algumas ideias para um possível projeto. No caso, tenho uma leitura de código de barras, através de um Arduino Mega e um shield USB. Gostaria de estar enviando esses dados para a planilha online com um módulo ESP8622. Contudo, ainda não tenho muita familiaridade com o módulo. Gostaria de saber se você teria algum fórum ou material pra indicar uma possível pesquisa de como realizar essa etapa de comunicação. Agradeço desde já. Parabéns mais uma vez!
Só posso te indicar os melhores lugares, porém, em ingles. http://www.esp8266.com e http://www.esp32.com
Os próprios desenvolvedores desses mcu’s são ativos no forum, eles podem te responder absolutamente qualquer pergunta sobre eles. Apesar disso, a comunicação entre o esp e arduino seria como em qualquer outro conjunto de microcontroladores, utilizando algum barramento como i2c, spi ou uart.
Muito bom
è possivel ser feito com o ethernet shield w5100 ?
Obrigado!
Sim, é uma simples conexão TCP e pode ser feita com qualquer meio de comunicação com a internet.
Tem como vc fazer um adicionando 2 ou mais dados ?
Estou com pouco tempo para isso, mas basta concatenar as variáveis. Este é o desafio do post hehe.
Ah hehe, tentei colocar,o programa compila, no entanto, ele nao mandava para nenhuma entrada =/
O post ta mto bom parabens
Parabéns! Estou procurando alguma maneira de transferir os dados dos Formularios para um banco de dados comum, tipo Postgres, mesmo que hospedado em um servidor. Obrigado.
Estou tentando fazer o mesmo projeto, mas utilizando Arduino Uno + Módulo wifi ESP8266, como devo proceder ? Porque esse código é apenas para NodeMcu, correto?
Por que não utiliza apenas o ESP? Se não for possível, ainda sim, seria recomendado programar o ESP independentemente de outro MCU e fazer a transmissão de dados entre os MCUs com algum protocolo Serial mesmo, como UART/SPI/I2C.
Este código foi feito para rodar no ESP, o Arduino seria apenas um receptor/transmissor de dados para o ESP, que este por fim esta conectado à planilha. Você deve programa-los de forma independentes.
Meus parabéns! Estou impressionado com simplicidade e eficiência do seu código. Eu desejo saber se esse código funciona numa página HTML, para que minha página tambem possa enviar informações a planilha, do mesmo modo que o esp faz! Tenho quase certeza de que funciona com alguns ajustes, mas estou na dúvida do que devo ajustar, como por exemplo, para qual endereço devo ajustar meu pedido get no javascript? E o que mais devo alterar? Desde já agradeço pela ajuda!
Os links devem se manter os mesmos, basta você atribuir os valores das requisições GET/POST em variáveis para mostra-las em tela…
José.
Muito Obrigado…
Sou um pouco leigo na programação e não estou conseguindo fazer essa comunicação..
Pode me dar mais uma força?
Abraços…
Consegui fazer a comunicação do Arduino MEGA ADK com o ESP-01 e enviar dados para uma pagina HTML seguindo esse esquema do site.: https://homeworkers.co/conexion-wifi-con-modulo-esp8266-y-arduino-mega/
Porém não consigo mudar o código para enviar para as planilhas on-line… Gostaria de “juntar” os 2 tutoriais, o seu e esse do site… Abraços….
Hugo, conseguiu algo com relação a isso?estou na mesma situação
Consegui fazer tudo funcionar, porém gostaria de uma ajuda pois preciso enviar os dados de um arduino mega adk para as planilhas e não estou conseguindo… Não sei como faço para enviar os dados de uma porta serial do arduino para as planilhas do Google através do esp-01… Como faço?
Faça o ESP receber dados pela Serial (que são enviados pelo Mega) e se já mandar no formato compatível com a planilha, basta envia-lo. É apenas uma comunicação pela UART/SPI/I2C/etc entre dois microcontroladores…
Boa noite
muito legal o trabalho estou tendo problema para fazer o envio de duas variaveis so consegui enviar valores fixo adicionando na linha testfix o valor e depois o &entry.xxxx= como colocar a variavel 2?
Este é o desafio do post para vocês aprenderem hehe, mas você deve concatenar os “entry.xxx=yyy”.
opa deu certo captei mestre
Parabéns! Gostei da explicação. Gostaria de saber também se existe alguma maneira de fazer ligações entre tabelas e estipular chaves como num banco de dados comum. Obrigado.
Olá José, parabéns pelo projeto muito bem explicado. Estou tentando fazer um projeto usando como base o seu, onde estou tentando enviar os dados de umidade, temperatura e ponto de orvalho (estou usando DHT22) para a planilha, porém só a coluna 3 está sendo preenchida com o valor do ponto de orvalho…. Teria alguma dica para a leitura dos outros dois também sejam enviadas para suas respectivas colunas?
Se você criou os três campos separados no formulário e esta enviando corretamente no código, era pra aparecer corretamente. Verifique se você criou os três campos e está enviando corretamente com a concatenação da URL. Algo similar a isto: ……………../formResponse?ifq&entry.XXXXXXX=XXX&entry.YYYYYYYY=YYY……….&submit=Submit HTTP/1.1″.
entry.XXXXXXX=XXX o que viria a seguir depois do =? Estava a pensar que seria minhas variáveis de leitura do sensor, porém quando coloco elas depois do sinal de “=” o que é mostrado na minha planilha são os nomes das minhas variáveis e não os valores lidos por elas.
Obs.: Porém cada nome em sua respectiva coluna.
Sim, depois do “=” é a variável. Muito provavelmente esta acontecendo isso pois você esta adicionando a variável de forma errada (como uma string).
O que você deve estar fazendo: “&entry.XXXXXXX=variavel”
Você deve concatear a variável, mas nesse caso está apenas “escrevendo o nome dela”, veja que esta dentro das aspas.
1-) String send += “&entry.XXXXXXXXX=”
2-) send += variavel.
Isso foi mostrado no tutorial.
Muito bom seu site, mas tenho uma dúvida.
Seria possível que o gráfico seja atualizado automaticamente após receber os dados da planilha?
Olá Augusto, isso já é feito automaticamente. Porem, ao selecionar a área que o gráfico “pega” os valores, selecione uma célula ABAIXO da ultima, com isso, ele sempre se manterá com o ultimo valor recebido.
Olá José. Parabéns pelo programa. Funcionou de 1a!
Estou tendo dificuldade pra entender/fazer funcionar como faço pra usar os meus dados: Criei dois campos de valores no formulário e já coloquei o “entry.XXXXX” dos dois na string auxiliar (testFix). Testei com valores fixos dentro da string auxiliar como vc deixou no exemplo: “= 123″e “= 1234” e foi pra planilha ok! Até aqui joia.
Como faço pra lançar duas variáveis minhas (dados dos meus dois sensores) no lugar do numero randômico pra aparecerem na planilha na mesma linha: timestamp; variável 1; variável 2?
Antecipadamente agradeço!
Basta substituir “random(0, 501)” pela variável que quer enviar.
Joia, obrigado! Mais uma questão: O q preciso fazer pro código rodar num ESP 32?
Apenas trocar a biblioteca “ESP8266WiFi.h” por “WiFi.h”
Olá estou tentando usar com o ESP 32 e deixei com a biblioteca WiFi.h e logo após ele entende que há um erro na proxima linha “WifiClientSecure’ does not name a type’ . Alguma dica?
Será que a biblioteca que tenho não é a mesma que deveria?
Talvez você precise incluir essa biblioteca no código. Se não me engano, a WiFi.h só inclui além de seus componentes, TCP e UDP (WiFiClient/WiFiServer e WiFiUDP). Mas a WiFiClientSecure para conexoes como TLS/SSL precisa ser incluida “na mão”. Tente adicionar #include “WiFiClientSecure.h” e veja se roda!
Será que funciona com arduino +esp8266?
Sim, basta fazer as operações relacionadas à internet no ESP, e se for o caso, transmitir ao Arduino.
Muito bom. Muito agradecido pela sua generosidade de compartilhamento do conhecimento. Parabéns.
Obrigado Ari!
Boa tarde José Morais, primeiro parabéns pelo post, ficou muito bem explicado e um assunto de grande ajuda. Estou tentando fazer o desafio apresentado porém quando tento enviar 2 variáveis ele está imprimindo cada uma delas em uma linha diferente, como faço pra postar tudo na mesma linha nas colunas certas?
Obrigado Bruno! Você precisa adicionar o outro campo (&entry.XXXXXXXX=XXX) ao fim da primeira String. Onde X são seus valores.
Primeiramente muito bom o tutorial! Demonstra pleno conhecimento dessa “baratinha”! Mas não consegui rodar com mais de uma variavel! Tentei criar outra “String textFix”.
Coloquei os campos (… OdA/formResponse?ifq&entry.1779445213=&entry.13360778=”; )
e lá em baixo coloquei
toSend += temperatura;
toSend += umidade;
e não deu certo …
Com uma variavel já está rolando e coloquei um atraso para medir a cada 1hora … mas com duas variaveis não consegui! A ideia seria colocar mais sensores pela residência e gerar um excel por ano, contabilizando umas 5 leituras por dia …
Se puder revelar os detalhes agradeço!
Hehe, esse é o desafio… Mas é basicamente o que você fez mesmo, mas precisa ser (entryXXX.=temp&entryYYY=umidade) e nao (entryXXX=&entryYYY=temp + umidade).
Ainda não rolou, agora ele não envia a temperatura também …
Ali em cima ok, vincula as variáveis (no meu caso temperatura e umidade) aos endereços do formulário, assim quando o programa roda joga nesse endereço os valores do DHT.
No inicio os endereços ficaram assim:
…… /formResponse?ifq&entry.1779445213=Temperatura&entry.679336048=Umidade”;
Lá embaixo coloquei assim:
.
.
.
String toSend = textFix;
//toSend += random(0, 1);
toSend += temperatura;
toSend += umidade;
toSend += “&submit=Submit HTTP/1.1”;
client.println(toSend);
.
.
.
Tá faltando o que?
…… /formResponse?ifq&entry.1779445213=Temperatura&entry.679336048=Umidade”; Tu nao vai colocar temp e umidade ai né… “Temperatura” e “Umidade” são as variáveis que quer colocar, não é pra escrever o texto no link e sim adicionar o valor das variáveis. Continue o desafio e estudando xD
Ótimo tutorial. Já estou ansioso para a parte 2. Gostaria de tirar uma dúvida sobre o envio/recebimento UDP, seguir seu tutorial, Comunicação Wireless UDP com ESP. Funcionou, porém tive muitas perdas, cerca de 50%. Você tem alguma dica para reduzir esse número?
Em meus testes, percebi que se o sinal do WiFi estiver fraco, a perda de pacotes é mais constante. Verifique se isso nao ocorre em seu caso. Caso o sinal esteja forte e mesmo assim perdendo pacotes, é preciso analisar mais afundo
Muito bom o tutorial, no aguardo da parte 2…parabéns!!
Até domingo da semana que vem, deve sair. Talvez esse domingo já, eu faça…
Parabéns pelo artigo, show de bola.
Obrigado :)
Top o tutorial, muito legal
Obrigado Victor! Espero que ajude :)
Muito bom, como posso ficar sabendo quando sair a parte 2?
Obrigado Adauto! Você pode ficar acompanhando o Portal, ou esperar aparecer nos grupos pelo facebook!