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

Amigo, recomece do zero pra aprender como faz pra configurar o arduino como webclient.

Ontem eu escrevi nesse tópico como faz pra usar o exemplo da própria IDE do arduino pra aprender como se configura um arduino no modo webclient.

Primeiro faça isso. Depois vc implanta os códigos do seu sensor
Vou fazer de noite , mas ja implantei ele na WEB via ip do arduino, funcionando e passando dados. Agora pro servidor do wamp server que está um perrengue.

Perguntinha básica : se o código do arduino estiver correto , quando compilado ele ja ira cadastrar no banco pelo arquivo PHP ou ele vai abrir a pagina ?

e outra : se o código do arduino estiver correto , quando eu abrir o arquivo php os parâmetros GET estarão visíveis pra min na URL ?

Grato

Pra pergunta 1, a resposta é que o arduino, ao enviar os dados do sensor pro php, o script php fará todo o tratamento e   se encarregará de inserir os dados no banco mysql. Quando vc pergunta sobre abertura de pagina, não sei o que vc quis perguntar, mas se vc quis saber se alguma janela de navegador será aberta e exibir alguma página, a resposta é não, nenhuma janela será aberta. O processo ocorre de forma transparente ao usuário,  mas caso vc queira acompanhar em tempo real, existe um log no servidor apache chamado "access_log". Ali fica registrado todo o acesso ao servidor apache. Como o arduino tentará acessar um script php no servidor apache, aparecerá no log.

Sobre a segunda pergunta, não entendi o que vc quis perguntar. Como assim visiveis na URL? Por favor,  reformule sua pergunta, usando termos corretos. Também não entendi como vc estaria tentando acessar o php nessa sua pergunta: vc está perguntando de acesso ao php via navegador ou via arduino?

A segunda Pergunta :to perguntando de acessar o arquivo php e ver os parametros na URL isso é possivel ou é transparente para nos ?

E aqui, eu vi um negocio de alterar no php.ini o Register_globals = off para ON , sera que isso pode mudar algo ?

Cara , não sei o porque , mas agora eu achei um outro codigo e dei uma modificada e funcionou.

Sou muito grato a sua atenção meu caro , muito obrigado!! Vou deixar o codigo pra quem precisar aqui...


// InternetDeLasCosas.cl
// Script que obtiene la temperatura desde un sensor LM35
// y la envia a un servidor web
//
// Escrito por @joniuz

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

// Mac unica de cada EthernetShield (deben cambiarla)
byte mac[] = {
  0x90, 0xA2, 0xDA, 0x0D, 0x96, 0xB4 };
byte ip[] = { 192,168,1,2 }; // Direccion ip local
char server[]={"192.168.1.3"};

// Inicializa la instancia client
EthernetClient client;

EnergyMonitor emon1;

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

// Variable de tiempo de la ultima conexion en milisegundos
unsigned long ultimaConexion = 0;          
// Estado de la ultima conexion
boolean ultimoEstado = false;
// Intervalo en milisegundos entre conexiones
const unsigned long intervaloConexion = 10000;   

// Datos del sensor
float tempC; // Temperatura en celsius
int LM35 = 0; // Pin A0 del Arduino

void setup() {
  // Inicializa puerto serial
  Serial.begin(9600);
  Serial.println("TESTE GET");
  Serial.println("SEI LA UQ");
  // Espera 1 segundo para que se inicie la tarjeta Ethernet
  delay(1000);
  // Si deseas usar un ip fijo y un DNS fijo descomentar esta linea y comentar la linea 39
  // Ethernet.begin(mac, ip, myDns);
  // Inicializa la tarjeta ethernet mediante DHCP
   emon1.current(pino_sct, 29);
  Ethernet.begin(mac, ip);
  // Imprime la direccion IP de la tarjeta
  Serial.print("Meu ip : ");
  Serial.println(Ethernet.localIP());
}
// Loop principal
void loop() {
 
  // Lee la temperatura desde el sensor
  tempC = analogRead(LM35);
  // Convierte el valor leido a temperatura
  tempC = (5.0 * tempC * 100.0)/1024.0;
 
  // Si hay datos que llegan por la conexion los envia a la puerta serial
  if (client.available()) {
    char c = client.read();
    Serial.print(c);
  }

  // Si no hay conexion de red y se conecto correctamente la ultima vez
  // detiene el cliente Ehternet
  if (!client.connected() && ultimoEstado) {
    Serial.println();
    Serial.println("Desconectando...");
    client.stop();
  }

  // Si no esta conectado y han pasado X segundos (intervaloConexion)
  // despues de la ultima conexion envia datos al servidor
  if(!client.connected() && (millis() - ultimaConexion > intervaloConexion)) {
    httpRequest();
  }
  // Actualiza la variable ultimoEstado
  ultimoEstado = client.connected();
}
// Fin del loop principal

// Realiza la conexion http al servidor
void httpRequest() {
  // Se conecta al servidor en el puerto 80 (web)
  if (client.connect(server, 80)) {
     double Irms = emon1.calcIrms(1480);
    // Envia el dato al puerto serial
    Serial.print("Sensor LM35: ");
    Serial.print(tempC);
     Serial.print("Sensor CORRENTE: ");
    Serial.print(Irms);
    Serial.println(" grados Celsius");
    // Envia el requerimiento al servidor via GET
    Serial.println("Iniciando conexion...");
    client.print("GET /arduino.php?id=joniuz&n=t&v=");
    client.print(Irms);
    client.println(" HTTP/1.1");
    client.print("Host: ");
    client.println(server);
    client.println("User-Agent: Arduino-Ethernet");
    client.println("Connection: close");
    client.println();

    // Actualiza el tiempo en milisegundos de la ultima conexion
    ultimaConexion = millis();
  }
  else {
    // Si la conexion fallo se desconecta
    Serial.println("Error al conectarse al servidor");
    Serial.println("Desconectando...");
    client.stop();
  }
}

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço