Neste artigo vamos mostrar como enviar dados coletados de sensores e armazená-los em um banco de dados usando ESP8266 através da conexão WI-FI e requisições HTTP com PHP
Nosso projeto de exemplo, vai funcionar da seguinte maneira:
- A cada 30 segundos o ESP8266 vai ler os dados do sensor e enviá-los através da conexão Wi-Fi a um servidor WEB via requisição HTTP (GET ou POST);
- No servidor um script PHP vai receber os dados enviados e gravá-los no banco de dados .
Supõe-se que o leitor tenha conhecimentos básicos sobre a teoria de Bancos de Dados Relacionais e MySQL, bem como sobre requisições HTTP.
No final do artigo relaciono alguns links úteis nesse sentido.
Passo 1: Criação do Banco de Dados
Vamos criar um banco de dados que será usado futuramente para armazenar os dados de uma estação meteorológica. Por isso nossa tabela receberá o nome de weather
Para criar o banco e a tabela, utilizei a ferramenta phpMyAdmin que vem com o uWamp – pacote de instalação do Apache + PHP + MySQL
Crie o banco de dados maker no MySQL e a tabela weather que receberá os dados dos sensores com a seguinte estrutura:
CREATE TABLE `weather` ( `wea_id` int(11) NOT NULL AUTO_INCREMENT, `wea_date` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, `wea_temp` float NOT NULL, `wea_humid` float NOT NULL, ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
Obs:
- O campo wea_id (chave primária) será incrementado automaticamente a cada inserção;
- A mesma coisa acontecerá o campo wea_date que guardará a data e hora em que o sinal foi enviado
- Os campos wea_temp e wea_humid vão armazenar os dados de temperatura e umidade enviados pelo ESP,
Passo 2: Script PHP
O script PHP ficará encarregado de ler os dados dos sensores enviados pelo ESP por uma requisição GET, fazer a conexão com o banco e gravar os dados através de um comando INSERT.
Vejamos:
<?php $temp = filter_input(INPUT_GET, 'temp', FILTER_SANITIZE_NUMBER_FLOAT); $humid = filter_input(INPUT_GET, 'humid', FILTER_SANITIZE_NUMBER_FLOAT); if (is_null($temp) || is_null($humid) ) { //Gravar log de erros die("Dados inválidos"); } $servername = "localhost"; $username = "root"; $password = "root"; $dbname = "maker"; $conn = new mysqli($servername, $username, $password, $dbname); if ($conn->connect_error) { //Gravar log de erros die("Não foi possível estabelecer conexão com o BD: " . $conn->connect_error); } $sql = "INSERT INTO weather (wea_temp, wea_humid) VALUES ($temp,$humid)"; if (!$conn->query($sql)) { //Gravar log de erros die("Erro na gravação dos dados no BD"); } $conn->close(); ?>
Obs: Crie uma pasta weather dentro da pasta www do servidor e coloque esse script com o nome insert_weather.php.
Passo 3: Protótipo ESP8266
Para nosso teste vamos usar o sensor de temperatura e umidade DHT11 e a placa de desenvolvimento NodeMCU, mas você pode usar qualquer placa compatível com a IDE do Arduino como a WEMOS ou a Adafruit Huzzah.
Montagem:
O sketch comentado ficou da seguinte forma:
/* ESP8266 e Banco de Dados - Requisições HTTP * 2016 por José Cintra * www.josecintra.com/blog */ #include <ESP8266WiFi.h> #include <WiFiClient.h> #include <SimpleDHT.h> // WiFi - Coloque aqui suas configurações de WI-FI const char ssid[] = "login"; const char psw[] = "senha"; // Site remoto - Coloque aqui os dados do site que vai receber a requisição GET const char http_site[] = "http://mycomputer"; const int http_port = 8080; // Variáveis globais WiFiClient client; IPAddress server(192,168,0,23); //Endereço IP do servidor - http_site int pinDHT11 = D2; SimpleDHT11 dht11; void setup() { delay(30000); Aguarda 30 segundos Serial.begin(9600); Serial.println("NodeMCU - Gravando dadios no BD via GET"); Serial.println("Aguardando conexão"); // Tenta conexão com Wi-fi WiFi.begin(ssid, psw); while ( WiFi.status() != WL_CONNECTED ) { delay(100); Serial.print("."); } Serial.print("\nWI-FI conectado com sucesso: "); Serial.println(ssid); } void loop() { //Leitura do sensor DHT11 delay(3000); //delay entre as leituras byte temp = 0; byte humid = 0; if (dht11.read(pinDHT11, &temp, &humid, NULL)) { Serial.print("Falha na leitura do sensor."); return; } Serial.println("Gravando dados no BD: "); Serial.print((int)temp); Serial.print(" *C, "); Serial.print((int)humid); Serial.println(" %"); // Envio dos dados do sensor para o servidor via GET if ( !getPage((int)temp,(int)humid) ) { Serial.println("GET request failed"); } } // Executa o HTTP GET request no site remoto bool getPage(int temp, int humid) { if ( !client.connect(server, http_port) ) { Serial.println("Falha na conexao com o site "); return false; } String param = "?temp=" + String(temp) + "&humid=" + String(humid); //Parâmetros com as leituras Serial.println(param); client.println("GET /weather/insert_weather.php" + param + " HTTP/1.1"); client.println("Host: "); client.println(http_site); client.println("Connection: close"); client.println(); client.println(); // Informações de retorno do servidor para debug while(client.available()){ String line = client.readStringUntil('\r'); Serial.print(line); } return true; }
Obs:
- Repare que usamos library SimpleDHT para controlar o sensor DHT11, mas você pode usar a library de sua preferência. Veja aqui as instruções para usar essa biblioteca.
- Neste exemplo usamos o servidor de teste da máquina local Windows, o localhost. No entanto, para acesso remoto não deve ser usado o IP 127.0.0.1. Para saber o IP da máquina local para a variável server use o comando ipconfig e observe o valor do ipv4.
Passo 4: Ação
Depois de criar o banco e upar o sketch para o ESP, realize a seguinte sequência de passos para ver tudo funcionando:
- Startar o servidor através da ferramenta uWamp. O Apache deve ser startado no modo ONLINE;
- Startar o sketch do ESP8266 e abra o Monitor Serial da IDE para acompanhar as mensagens de log.
Pronto! Para ver o resultado abra o phpMyAdmin e execute o seguinte comando SQL:
SELECT * FROM WEATHER
E então você verá os dados chegando a cada 30 segundos.
Até a próxima!
Poderia passar algum link que mostre um exemplo de como buscar uma informação presente no nomeMCU e apresentá-la numa página WEB, como por exemplo ver o status do led da placa? Obrigado.
Olá Renato!
Este exemplo faz o que você quer:
Controlar um LED e mostrar seu status em uma página web hospedada no ESP8266:
http://internetofthinking.blogspot.com.br/2015/12/control-led-from-webserver-using.html
Olá José Cintra!
Onde posso encontrar estas bibliotecas? Poderia deixar um link?
#include
#include
Obrigado!
Sávio, você quer dizer as bibliotecas para o NodeMCU/ESP8266?
Aqui, você encontra as instruções para configurar o NodeMCU:
https://josecintra.com/blog/programando-nodemcu-esp8266-ide-arduino/
Na verdade estava tentando fazer esse teste com ESP8266/Arduino e não com um node MCU…
Nesse caso, indico este tutorial de André Curvello: https://www.embarcados.com.br/esp8266-com-arduino/
Bom dia;
José Cintra, estou com uma dificuldade para conseguir gravar os dados do sensor DHT 11 no bando dos dados (MYSQL) que só me retorna um conjunto vazio no Uwamp. Fiz todas as configurações necessárias que você descreveu no tutorial, mas não deu certo. Só fiquei em dúvida sobre qual endereço de requisição HTTP tenho que colocar nesse campo: (const char http_site[] = “http://mycomputer”;) no lugar de mycomputer?
Abraços.
Olá Gilielson,!
Para saber qual o endereço usar no sketch, execute o comando ipconfig do windows.
Instruções completas enviei no seu email
Abraço
José Cintra
oi José Cintra, será que me poderia enviar para mim também as instruções.
pode me enviar pelo email também? uigor.1@hotmail.com
Olá Uigor! Envie sua dúvida para o meu email que posso tentar te ajudar: josecintra@josecintra.com
Enviei o email com fotos sobre minhas duvida, muito obrigado pela atenção.
Olá José,
Poderia me enviar também por favor? gabriel_mavroudes@hotmail.com
Agradeço desde já !
o que eu coloco no: const char http_site[] = “http://mycomputer”;
Olá Francisco
Coloque o nome “DNS” do seu computador. No Windows, para saber o nome do seu computador vá em “Meu computador”
Poderia me enviar por favor
allef.anderson@hotmail.com
Boa noite!
No meu projeto pretendo coletar dados de sensores pelo ESP8266 Sparkfun e enviá-los para ser exibido na página da minha empresa em forma de gráficos em tempo real. Parabéns pelo tutorial, mas infelizmente no serial monitor tenho essas mensagens de retorno:
Gravando dados no BD:
27 *C, 57 %
/?temp=27&humid=57
HTTP/1.1 404 Not Found
Server: Apache
Content-Type: text/html; charset=iso-8859-1
Content-Length: 225
Accept-Ranges: bytes
Date: Mon, 27 Mar 2017 23:22:20 GMT
Age: 0
Connection: close
404 Not Found
Not Found
The requested URL /weather/insert_weather.php/ was not found on this server.
Gravando dados no BD:
27 *C, 58 %
/?temp=27&humid=58
HTTP/1.1 404 Not Found
Server: Apache
Content-Type: text/html; charset=iso-8859-1
Content-Length: 225
Accept-Ranges: bytes
Date: Mon, 27 Mar 2017 23:22:26 GMT
Age: 107
Connection: close
Essa mensagem fica repetindo para sempre.
Teria alguma dica que eu possa tentar? Fiz exatamente como você ensinou.
Obrigado!!
Olá Paulo!
Esse erro ocorre quando a página não foi encontrada na pasta do servidor.
Verifique no servidor que você instalou qual deve ser a pasta onde ficam os documentos web.
No servidor que uso essa pasta se chama WWW. Em outras instalações essa pasta pode estar configurada com outros nomes, como ROOT ou HTDOCS.
Dentro dessa pasta deve ser criada a pasta weather para colocar os arquivos do exemplo:
/weather/insert_weather.php/
Verifique qual a porta esta usando também.
Abraço.
Bom dia José Cintra!
No meu servidor tenho a pasta httpdocs. Dentro dela coloquei a pasta weather e continuou com o mesmo erro. Tentei adicionar a pasta weather na pasta httpdocs/www.gridenergia.com.br/ que se encontra no servidor, mas continuou com o mesmo erro. Usei a porta 8080 como você descreveu no tutorial e também a porta 80, mas ainda nenhum resultado.
Esse projeto consiste em um trabalho de tcc que estou desenvolvendo e preciso muito que de certo kkkkkk. Teria como entrar em contato com você por email para que possa me dar uma ajuda ou alguma dica?
Desde já agradeço sua atenção! Bom dia.
Olá Paulo.
No Blog, seção “Sobre o autor” tem o meu email.
Abraço.
Estou usando seu exemplo contudo estou tendo o seguinte erro
HTTP/1.1 400 Bad Request
Server: Apache
Content-Type: text/html; charset=iso-8859-1
Content-Length: 226
Accept-Ranges: bytes
Date: Fri, 31 Mar 2017 18:02:26 GMT
Age: 0
Connection: keep-alive
400 Bad Request
Bad Request
Your browser sent a request that this server could not understand.
HTTP/1.1 400 Bad Request
oi Paulo,você poderia me dar algumas dicas e me ajudar??Estou me baseando nisso para fazer o meu TCC tambem
obrigado por sua atenção!!
Bom dia como eu faço para ler dados do banco com o esp8266
Boa tarde,
Eu consigo inves de mandar dados, fazer com que o ESP8266 pegue a tag de um cartão via leitor RFID e buscar dados em um banco de dados?
Obrigado
Olá José, eu consigo após enviar as informações via GET ou POST ter uma resposta do servidor destino (ex. cadastro ok, etc)? Obrigado!
Olá Juliano!
Sim. No código de exemplo, onde está escrito // Informações de retorno do servidor para debug
Ali você pode tratar a resposta do servidor. Você pode colocar o seu código ali.
Existe um exemplo no blog no artigo sobre ajax Aqui
Olâ Muito bom poste
Gostaria de usar o Modulo dht22 isso mudaria apenas as linhas:
int pinDHT11 = D2;
SimpleDHT11 dht11
//Leitura do sensor DHT11
delay(3000); //delay entre as leituras
byte temp = 0;
byte humid = 0;
if (dht11.read(pinDHT11, &temp, &humid, NULL)) {
Serial.print(“Falha na leitura do sensor.”);
return;
}
_____________________________________________________________
para:
int pinDHT22 = D2;
SimpleDHT22 dht22
delay(3000); //delay entre as leituras
byte temp = 0;
byte humid = 0;
if (dht22.read(pinDHT22, &temp, &humid, NULL)) {
Serial.print(“Falha na leitura do sensor.”);
return;
}
____________________________________________________________________
??????
Agradeço desde já
Olá João!
Nesse exemplo usei outra biblioteca que só funciona para o DHT11.
Para o DHT22, você deve adaptar o código para esta daqui: http://www.arduinoecia.com.br/2015/02/sensor-de-temperatura-e-umidade-dht22.html
Abraço!
Bom dia, tudo bem?
Pode me auxiliar com a conexão de um ESP8266 NODE MCU com banco MySQL?
Da parte do PHP, fiz algumas alterações e estão ok. Fiz um teste inserindo a linha no navegador e gravou no banco.
http://thinkpro.com.br/dashboard/insert.php
Na IDE do Arduino, tenho o seguinte erro, que fica se repetindo:
Gravando dados no BD:
19 *C, 61 %
Falha na conexao com o site
GET request failed
Poderia me auxiliar, por favor? Anexo, segue o código .ino.
Muito obrigado!
Benito
Boa tarde.
Estou tentado conectar o ESP8266+arduino, mas não estou conseguindo. Todos os tutoriais que encontro usam a biblioteca , mas quando busco no github, a biblioteca foi renomeada como SerialESP8266wifi. Instalo, mas não conecta. Na verdade não sei se o problema é este, mas preciso resolver este para verificar outros. Obrigado
Desculpe, o texto ficou truncado. Tento conectar ESP8266-01+Arduino UNO na minha rede wifi. A biblioteca que é solicitada é a ESP8266WiFi.h .
Olá! parabéns pelo post, o mesmo esta sendo muito util para minha aprendizagem, porém eu tenho uma duvida.
const char http_site[] = “http://mycomputer”;
oque deve ser colocado nessa parte do sketch?
eu coloquei parte da url do endereço do insert_wether.php, ficou assim:
const char http_site[] = “http://weather/insert_weather.php”;
esta errado?
Olá Uigor!
Substitua “mycomputer” pelo nome do seu computador (como é visto na rede).
No Windows, para descobrir o nome do seu computador, clique com o botão direito no ícone “Meu computador” ou “Computador”
José, eu quero fazer um projeto parecido. É um sistema que lé codigo de barra e transmita para o banco de dados, vc pode me dar um auxilio? meu email é flaviomotamota@gmail.com deste já obg
Ok. Entrarei em contato
Estou com mesmo problema que o Andrew:
HTTP/1.1 400 Bad Request
Server: Apache
Content-Type: text/html; charset=iso-8859-1
Content-Length: 226
Accept-Ranges: bytes
Date: Fri, 31 Mar 2017 18:02:26 GMT
Age: 0
Connection: keep-alive
400 Bad Request
Bad Request
Your browser sent a request that this server could not understand.
HTTP/1.1 400 Bad Request
Olá João!
As vezes pode ser nos comandos print, pois são eles que montam a requisição para o servidor
Tente mudar a variável http_site no comando abaixo e coloque o IP da sua máquina para garantir
client.println(http_site);
João, tive o mesmo problema.
Removi + ” HTTP/1.1″ da linha de codigo abaixo e começou a gravar no banco de dados… o restante deixei do jeito que estava
client.println(“GET /weather/insert_weather.php” + param + ” HTTP/1.1″);
ficaria desse jeito:
client.println(“GET /weather/insert_weather.php” + param);
Estou com este problema
Bad request!
*/–>
Bad request!
Your browser (or proxy) sent a request that
this server could not understand.
If you think this is a server error, please contact
the webmaster.
Error 400
http://www.example.com
Apache/2.4.26 (Win32) OpenSSL/1.0.2l PHP/7.1.7
Parabens pelo topico.
Estou com algumas dúvidas, estou tentando fazer a conexão com um servidor. Tenho dúvidas nos seguintes itens.
IPAddress servers();
const char http_site[] = “”;
Olá Madson. Você está usando um servidor local na sua máquina, certo? Dessa forma, use:
IPAddress – O endereço IP da máquina (você consegue esse IP executando o ipconfig e observe o valor do ipv4)
http_site – nome da máquina (você consegue saber no Windows em “meu computador”
Muito obrigado José Cintra.
Estou com um problema agora, que ele não está inserindo no banco. Ele não está retornando nenhum erro.
Executei a pagina manualmente e inseriu.
dentro do wamp tem: wamp/www/weather/insert_weather.php
acho que o problema pode estar aqui:
client.println(“GET /weather/insert_weather.php” + param + ” HTTP/1.1″);
Tem algum lugar que voce me indica, para estudar sobre o client.println e esse GET?
Olá Madson!
Se funcionou manualmente, então falta pouco.
Verifique se o WAMP está sendo executado no modo ONLINE.
Pode ser algum problema de segurança.
Veja esses links para conhecer mais sobre requisições HTML:
http://www.devfuria.com.br/php/como-funcionam-os-metodos-get-e-post/
https://www.arduino.cc/en/Tutorial/WebClient
Obrigado Jose Cintra,
Para fazer o caminho inverso, pegar a variável do banco e passar para o esp8266. Acredito que deva usar outra biblioteca, você tem ideia do que posso procurar?
No blog tem um tutorial que faz isso que você quer:
https://josecintra.com/blog/nodemcu-web-server-ajax/
José Cintra,
Tenho que enviar via post para esta urlonde tem um servidor apache
http://178.90.161.215:1215/sk2_ws/rest/Equipamento/register
Estes Dados para enviar 10001000012331
Tem ideia de como enviar isto.
Já envio dados para um outro endereço usando IP e Porta como TCP cliente.
Fico agradecido com qualquer ajuda.
Ronaldo
Olá Ronaldo!
Sim, o processo é bem parecido. apenas parece que o endereço que você passou é um REST (WEB Service).
Precisa saber se é POST, GET, PUT, DELETE, etc.
Veja aqui um tutorial que talvez ajude: https://techtutorialsx.com/2016/07/21/esp8266-post-requests/
Jose,
Estou na dúvida sobre quais informações colocar no http site, e no ip Adress server.
Estou precisando enviar os dados para o ip/web/werbservice.php.
Bruno
Olá Bruno!
Em http_site coloque o nome do seu computador que aparece no ícone “Meu computador” no windows
Em IPAddress coloque o IP da sua máquina (que é o servidor nesse caso)
José boa tarde.
Gostaria de tirar uma duvida referente ao post. Estou trabalhando com o esp8266 porem estou usando como interface para um pic 18f4620, estou enviando as informações via comandos AT, porem ao enviar o GET estou recebendo um bad request.
Gostaria de saber se você possui alguma literatura referente ao comando GET e sua sintaxe sem ser por bibliotecas, pois como disse estou utilizando apenas comandos AT.
Desde já agradeço.
Olá Bruno!
Aqui você encontra um bom material sobre requests: https://www.ntu.edu.sg/home/ehchua/programming/webprogramming/HTTP_Basics.html
Mas veja se consegue checar como a URL está chegando, se não tem nenhuma letra faltando ou a mais. Tente acessar o servidor com essa mesma URL via browser para verificar se está tudo funcionando.
Boa Tarde José, consegui fazer o envio, se tratava de problemas com permissões na hospedagem e o proprio comando GET, o comando para envio no meu caso ficou assim : GET http://meudominio.com.br/insert_weather.php?+param+\r\n
Agradeço imensamente a atenção.
Oi José, tudo bem ?
Parabéns pelo blog! Queria tirar uma dúvida com você…
Tenho a ideia de fazer uma programação semelhante a essa sua, porém tenho a necessidade de acionar 30 cargas. Você acha que nodemcu suporta um código, para enviar essas informações de controle para essas 30 cargas, por meio desse método GET ?
Olá Diego! Obrigado!
Você quer passar 30 comandos através do GET, correto?
Existe um limite para o tamanho da URL do GET que varia de acordo com os browsers/servidores.
Algo em torno de 2048 bytes, o que pode ser suficiente para o seu caso.
Em caso de problemas, mude para o método POST
Cara, parabéns pela postagem.
Ajudou a esclarecer muita coisa dentro desse exemplo. Um abraço
Caio, obrigado.
Abraço!
Olá pessoal!
Sou iniciante na programação com ESP8266, Arduino IDE e C++.
Fiz um progresso bem pequeno ao conectar a ESP8266 ao wifi de minha casa, mas gostaria de enviar ainda alguns dados ao servidor de meu tio através de uma requisição POST e não estou obtendo sucesso.
Já tentei enviar os dados usando a WiFiClient library e
a ESP8266HTTPClient library mas nenhuma delas funcionou. Estou começando a pensar que talvez os dados que meu tio me deu do web server dele não estão corretos.
Aqui estão os dados:
POST /rods/airlo/firstmodule/ HTTP/1.1
Host: iotsystem.synology.me:3140
Content-Type: application/json
Cache-Control: no-cache
Postman-Token: (é um código longo com vários números e letras mas não postarei por conta de segurança).
Só consigo imaginar dois motivos para falhas: ou não estou inserindo os dados corretamente nos códigos ou ele me passou dados errados.
Alguém pode me ajudar?
Muito obrigado!!
Boa tarde José Cintra!
Se eu precisar de capturar os dados da base de dados para o browser como devo proceder? Pretendo que todos os clientes da rede consigam (através do meu ip – servidor) visualizar os dados do sensor.
Mais informações contacte-me por email:
miguel.o@ua.pt
Obrigado
Olá Miguel!
Uma vez que os dados já estão no BD, seria desenvolver uma página de relatório.
Esse relatório pode ser parametrizado. É possível fazer gráficos com os dados também
Cara voce tem algum exemplo de como pegar os dados de um sensor MPU6050 e mostrar em uma página web com o esp8266
Olá, João Pedro!
Especificamente para o MPU6050, não tenho.
Gravando dados no BD:
25 *C, 48 %
Falha na conexao com o site
GET request failed
O que devo colocar na string site?
Boa tarde Cintra!
Estou ficando desanimado, faz mais de mês que estou tentando fazer conexão e não consigo,
bool getPage(int temp, int humid)
{
Serial.println(server); // retorna meu ipv4 192.115.78.37 (Ficticio).
Serial.println(http_port); // retorna: 8080
Serial.println(client.connect(server,http_port)); // retorna: 0
if ( !client.connect(server, http_port) )
{
Serial.println(“Falha na conexao com o site”); //Envia sempre esta msg
return false;
}
onde estou errando
Obs: utilizo Wampserver 3.0.6
Forte Abraço
Eugenio
boa tarde :
Parabéns pelo projeto
estou com uma dificuldade para enviar os dados para uma pagina pode me ajudar
o erro GET request failed
meu servidor esta https://000webhostapp.com
Olá Cintra,
Estou utilizando a MCU ESP8266 e um sensor DHT22 e os dados estão sendo gravados em um SD. Gostaria de saber se seria possível, enviar os dados do SD usando um filtro ( por exemplo: últimos 30 minutos) e inserir em um banco de dados remoto a cada 25 minutos (5 de contingência) ?
Aproveito para parabenizá-lo do seu conhecimento.
Olá Marcelo,
Sim é possível. Você pode usar a função Millis para computar esses minutos ou, se precisar de mais precisão, pode usar um módulo de relógio.
Abraço!
Boa tarde, eu adorei o texto e eu gostaria de saber se caso fosse um post, qual seria a forma de passar o parametro?
Exemplo:
client.println(“POST/weather/insert_weather.php” + param + ” HTTP/1.1″);
Seria o “+” ou a “,” ?
Bom dia!
Use o sinal de +
Abraço.
Olá Jose cintra Parabéns, otimo post ,so que estou com um problema o que aparece pra min aqui é :
Gravando dados no BD:
30 *C, 28 %
?temp=30&humid=28
Não reporta nenhum erro , mas não faz o insert no Banco de dados!
Estou utilizando a Porta 80 e o Xampp como servidor.
Na pagina /weather/insert_weather.php que esta na pasta htdocs/weather, quando abro no navegador e faço a inserção manualmente, os dados são inseridos com sucesso, mas pelo esp8266 não vai e não reporta nenhum erro tbm???
Olá David
Nesse caso podem ser as configurações no início do sketch
const char http_site[] = “http://mycomputer”; Pode colocar aqui o nome do seu computador. No windows botão direito em MEU COMPUTADOR
const int http_port = 8080; // A porta do xampp
IPAddress server(192,168,0,23); / O IP do seu computador. Veja no ipconfig (IPV4)
Consegui, mas só deu certo após mudar o HTTP/1.1 para HTTP/1.0
acho que deve ser por causa do meu servidor xampp ser uma versão mais antiga, mais mesmo assim obrigado!
Boa tarde …
Fiz tudo conforme o explicado e funcionou corretamente.
Você teria algum exemplo onde além de enviar os dados do arduino para o servidor (temperatura e umidade) o servidor retornasse para o arduino alguma resposta ?
obrigado
https://josecintra.com/blog/nodemcu-web-server-ajax/
Você teria que juntar os códigos
Olá Amigo
Segui sua recomendação instalando e testando a forma de enviar dados do apache para o arduino e funcionou sem problemas.
Agora quanto a juntar os códigos não consigo nem compilar a minha junção pois da conflitos e meu conhecimento é tão basico que não sei o que fazer.
Poderia me dar uma orientação sobre a junção dos dois códigos ?
Obrigado
Desculpa minha ignorância, mas como fica a pasta do projeto? Como faz o php comunicar com esse arquivo?
Boa noite, parabéns pelo excelente texto. Se eu usar apenas o módulo dht11 com uma placa mini ESP8266 ESP-01 com fonte de alimentação externa (bateria 3,7v) eu consigo utilizar o mesmo procedimento ilustrado ou existe alterações? Fiz exatamente como no texto, porém, não está gravando no banco de dados.
Outra pergunta é, baixamos o xampp e usamos ele para criar o banco de dados no phpmyadmin, no item 4 o Sr. diz que precisamos startar o apache pelo uWamp, onde o mesmo deve estar online. Não dá para usar apenas o xampp?
Desculpe se as questões são triviais, estou tentanto iniciar nesta área.
Obrigado
Olágo Hu!
Sim. Se você usar a placa mini é o mesmo procedimento. Sugiro fazer um projeto a parte menor, só para testar a parte do sensor e depois partir para o projeto completo. Verifique se as portas devem ser as mesmas.
Pode usar o XAMPP. Eu também agora só estou usando o XAMPP
Obrigado pelo retorno Prof., no entanto, no serial aparece tudo ok, mas no banco de dados não chega nada. Quais podem ser os possíveis problemas? Já que segui rigorosamente as instruções.
Obrigado
Olá!
Podem ser vários motivos.
A melhor maneira é debugar a aplicação.
Primeiramente, veja qual o comando que está sendo enviado ao banco. Para fazer isso, use a Serial. Veja se está sendo montado corretamente.
Execute esse comando diretamente no banco e veja se funciona.