Boa noite,

Estou precisando cadastrar dados do arduino no banco por meio do method GET.

O arduino copilou tudo certo , mas no php ele da um erro, se alguem puder me ajudar ficaria bem grato.

segue os codigos :

PHP - ERRO NA LINHA 11 Notice: Undefined index: Irms in C:\wamp\www\arduino.php on line 11

<?php
//poner en htdocs de XAMPP, nombrado archivo.php
$mysql_servidor = "192.168.1.3";
$mysql_base = "test";
$mysql_usuario = "root";
$mysql_clave = "";
 
date_default_timezone_set("America/Santiago");
$hora = time();
$fechaRegistro="".date("d-m-Y H:i:s", $hora);
$valor = htmlspecialchars($_GET["Irms"],ENT_QUOTES);
echo "".$fechaRegistro."---".$valor;
// Valida que esten presente todos los parametros
if (($fechaRegistro!="") and ($valor!="")) {
        mysql_connect($mysql_servidor,$mysql_usuario,$mysql_clave) or die("Imposible conectarse al servidor.");
        mysql_select_db($mysql_base) or die("Imposible abrir Base de datos");
        $sql = "insert into teste (corrente, potencia) values ('$fechaRegistro','$valor')";
        mysql_query($sql);
}else {
        echo "paso por aqui";
}
?>

ARDUINO :

#include <SPI.h>
#include <Ethernet.h>
#include "EmonLib.h"

byte mac[] = {
  0x90, 0xA2, 0xDA, 0x0D, 0x96, 0xB4 };
byte ip[] = { 192,168,1,3 }; // Direccion ip local
char server[]={"192.168.1.1"};
 
EthernetClient client;
// Definicion de pines
EnergyMonitor emon1;

 
//Tensao da rede eletrica
int rede = 111.1;
 
//Pino do sensor SCT
int pino_sct = 2;

 
void setup()
{
  Serial.begin(9600);
   emon1.current(pino_sct, 29);
  Ethernet.begin(mac, ip); // inicializa ethernet shield
  delay(1000); // espera 1 segundo despues de inicializar
  Serial.print("My IP address: ");
  Serial.println(Ethernet.localIP());
}
 
void loop()
{
   double Irms = emon1.calcIrms(1480);
  Serial.print(Irms); // Escribe en el puerto serial para monitorear
  Serial.print(" Corrente");
 
  Serial.println("Conectando..");
 
  if (client.connect(server, 80)) {  // Se conecta al servidor
    client.print("GET http://192.168.1.3/arduino.php?Irms="); // Envia los datos utilizando GET
    client.print(Irms);
    client.println(" HTTP/1.0");
    client.println("User-Agent: Arduino 1.0");
    client.println();
    Serial.println("Conexion exitosa");
  }
  else
  {
    Serial.println("Falla en la conexion");
  }
  if (client.connected()) {}
  else {
    Serial.println("Desconectado");
  }
  client.stop();
  client.flush();
  delay(3000); // espera 15 segundos antes de volver a sensar la temperatura
}

DESDE JÁ AGRADEÇO .

Exibições: 3656

Responder esta

Respostas a este tópico

esse erro relatado significa que não havia $_GET['Irms'], isto é, quem acessou o script arduino.php não o fez através do método GET.

Exemplo: ao invés de se conectar ao script através de http://192.168.1.3/arduino.php?Irms=xxxxx , foi detectado que não estava presente o parâmetro lmrs

Teria alguma solução para eu resolver isso? pois não entendi muito bem .

deixa eu entender uma coisa:

esse erro foi gerado quando o arduino tentou enviar dados pro script php?

ou esse erro foi gerado quando vc tentou acessar o script php através do navegador (por exemplo quando vc tentou acessar o script para fins de teste)? 

Quando eu fui abrir o php , ai gerou erro.

Fiz uns testes e percebi q o meu arduino nao está passando parametros, pois se eu digitar no link o Irms= 'a alguma coisa'  ele cadastra no banco.

Era pra ao compilar o meu arduino o arquivo php abrir ja com os parametros get la em cima exposto ?

Ao meu ver o  Arduino não está enviando nada.

é o seguinte, vou tentar explicar o mais detalhadamente possível:

se vc tentar acessar o script manualmente através do navegador dessa forma:

http://IPdoServidorComPHP/arduino.php  ==> isso resultará em erro "Notice: Undefined index: Irms", pois seu script php foi programado para encontrar o parâmetro lrms que deve ser enviado no momento da conexão.

O correto então para que tal erro não mais apareça seria conectar dessa forma:

http://IPdoServidorComPHP/arduino.php?lrms=256    ==> perceba que agora o parâmetro lrms está sendo devidamente enviado quando o script arduino.php é acessado

Mas enfim, vc não precisa ficar queimando a cuca com esse erro. Esse erro não é erro de script php. É apenas uma notificação de que o parâmetro GET lrms não foi encontrado. Em outras palavras: quando tal parâmetro for encontrado, a mensagem de notificação simplesmente não será mais emitida.

Preocupe-se mais em garantir que o arduino consiga conectar ao script php.

Qual o IP do seu arduino?

Qual o IP do servidor apache+php+mysql?

Em qual porta vc instalou o servidor apache?

Seguinte , eu ate consegui dessa forma passando parametro manualmente, mas o que eu queria era que os dados reais do sensor que foi declarado passasse em ter que escrever lá.

Uso WAMP server . 192.168.1.3 -- localhost PORTA : 8080

Esse IRMS no caso era o dado da corrente do sensor , que queria que fosse cadastrado.

sim, eu entendi que vc quer cadastrar dentro do banco de dados o lrms que o arduino obtém.

Se vc conseguiu inserir dados manualmente através do navegador, é um ótimo sinal, pois mostra que o script php está trabalhando corretamente.

Agora vc precisa se concentrar em construir o sketch corretamente para funcionar como webclient. Desse jeito aí que vc mostrou no tópico de abertura, o sketch está errado. Vc informou no tópico de abertura que o sketch compilou certo, mas compilar certo não quer dizer que funcionará. O tal do "compilar certo" só mostra que não há erros de sintaxe, ou falta de biblioteca, ou não esqueceu de declarar variáveis, enfim, coisa assim. Mas se vc fizer tudo certinho pra compilar e mandar conectar no IP errado ou na porta errada, o sketch simplesmente não funcionará, apesar de ter compilado certo

Veja como faz do modo correto, basta olhar o próprio exemplo que vem com a IDE do arduino (Arquivo -> Exemplos -> Ethernet -> WebClient)

Atenção especial aos IPs. Uma coisa é o IP atribuído ao arduino. A outra coisa é o IP do wamp server onde está o php. E se vc usa a porta 8080, então vc é obrigado a explicitar isso no seu sketch.

Vou tentar , mas creio que ja está tudo espécificado , amanhã darei noticias, muito obrigado por estar me ajudando ai.

Meu caro, ainda não consegui. O codigo está certo a configuração de ip tambem, era para quando eu abrir o arquivo php ele abrir com parametros , ou ja cadastrar direto ?

Mesmo assim nada de funcionar ... Eu ultilizo o wamp server , o arquivo esta na raiz do localhost ... www/arduino.php

Se alguem puder me ajudar , preciso muito resolver isso!!
So uma obs : meu ip 192.168.1.1 é o do roteador de internet , o qual acessa os dados do provedor.

192.168.1.3 -- localhost

So para especificar , para ver se não estou fazendo coisa errada.

No monitor serial , diz que achou conexão nesses ip's , mesmo assim nada

"O codigo está certo a configuração de ip tambem"

Não, amigo. Não está certo.

Diga aqui qual o IP que vc quer atribuir ao seu arduino e qual o IP do seu wamp server.

Quando vc diz que 192.168.1.3 é do localhost, isso não esclarece nada. Pro arduino, localhost é ele mesmo. Pro seu wamp server, localhost é ele mesmo. Pro roteador, localhost é ele mesmo.

Portanto, localhost significa algo como "eu mesmo".

Ok, vou atribuir ao arduino o ip 192.168.1.200 (Ja tinha ate feito uns sensores na WEB com esse ip do arduino)

wamp server (localhost) 192.168.1.3,

O que eu faço agora?

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço