Enviar dados do Arduino para o Servidor (MySQL) através do método GET

Boas,

Tenho estado com um problema com os desenvolvimento sobre o Arduino e a inserção de dados em tabelas no MySQL.
A conexão é feita através de um modulo GSM/GPRS.

Aqui está o meu código

void setup(){
// initialize serial communications and wait for port to open:
Serial.begin(9600);
  
//Establish pin 4 as an INPUT
pinMode(Boton, INPUT);

Serial.println("Starting Arduino Web Client.");
// connection state
boolean notConnected = true;

// After starting the modem with GSM.begin()
// attach the shield to the GPRS network with the APN, login and password
while(notConnected)
 {
    if((gsmAccess.begin(PINNUMBER)==GSM_READY) &
      (gprs.attachGPRS(GPRS_APN, GPRS_LOGIN, GPRS_PASSWORD)==GPRS_READY)){
      notConnected = false;
      } else
    {
      Serial.println("Not connected");
      delay(1000);
    }
 }
 Serial.println("connecting...");
}

void loop()
{

  String primeiroID="IDnumero1";
  String segundoID="IDnumero2";


  if (client.connect(server, port)){
        client.print("GET /temperature_process_get.php?");        
        Serial.println("GET /temperature_process_get.php?");
        
        client.print("ID1=");
        Serial.println("ID1=");
        client.print(primeiroID);
        Serial.println(primeiroID);
        
        client.print("&");
        Serial.println("&");
        client.print("ID2=");
        Serial.println("ID2=");
        client.print(segundoID);
        Serial.println(segundoID);

        client.println(" HTTP/1.0");
        Serial.println(" HTTP/1.0");
        
        client.println("Host: ");
        Serial.println("Host: ");
        
        client.println(server);
        Serial.println(server);        
                
        client.println("Content-Type: application/x-www-form-urlencoded");
        Serial.println("Content-Type: application/x-www-form-urlencoded");
        client.println("Connection: close");
        Serial.println("Connection: close");
        client.println();
   }
        
      if (client.connect(server, port))
      {
        client.stop();
        Serial.println("Disconnecting");
      }
      } 
  }
  else
  {
    // if you didn't get a connection to the server:
    Serial.println("the connection failed");
    Serial.print("");
  }
  delay(10000); // delay to send data every 10 seconds
}

Código PHP

<?php
$conex = mysql_connect("localhost", "user", "pass");



if(!$conex){
    die("Atencao, nao possivel conectar ao servidor
".mysql_error());
}
else
{
 echo "Conexao feita";
}

$db = mysql_select_db("boatproject", $conex);

if(!$db){
    die("Atencao, nao e possivel conectar com a base de dados
".mysql_error());
}

$ID1 = $_GET["IDnumero1"];
echo "primeiroID  $ID1";
echo $ID1;
$ID2 = $_GET["IDnumero2"];
echo "segundoID  $ID2";
echo $ID2;
?>

A conexão ao servidor está a ser feita, estando a minha página PHP a ser acedida. Só que quando tento imprimir os valores na página PHP, que recebo do Arduino, vêm sempre a vazios. Sendo assim a inserção destes dois valores não está a ser feita correctamente…

E os valores das variáveis também parecem estar bem no Arduino, porque consigo imprimir os valores correctos na consola.

Sabem do que pode ser?

Abraço

Falta aqui aproximadamente 50% do código, não achas? Ou estás seguro que o PHP está a funcionar? Já testaste com o browser, por exemplo?

Outra coisa que me parece interessante é fazeres um return do php para o Arduino e confirmares que a mensagem foi recebida pelo mesmo. Algo como "ok" ou "nok" é suficiente e dar-te-á alguma indicação.

Se pudessemos ver o código PHP, provavelmente teríamos mais pistas para o que pode estar errado.

Já agora... o objecto cliente vem de onde???

Não estou muito seguro que o PHP esteja também a funcionar. Já adicionei restante código PHP. O objecto cliente é o próprio Arduino que envia os dados para o servidor.

$ID1 = $_GET["ID1"]; //erro aqui...
echo "primeiroID"  + $ID1; //erro aqui
echo $ID1;
$ID2 = $_GET["ID2"]; //erro aqui...
echo "segundoID"  + $ID2; //erro aqui...

Acho que o PHP é assim que deve estar, não achas??

Desde já obrigado. É verdade que esse era um dos problemas, mas mesmo assim continuo a não receber valores nas impressões do PHP.

O que é que aparece? Chegas a ligar à bd? Mete aqui o que aparece no php... Ou o que é enviado para o Arduino.

o que aparece no PHP é :

"Conexao feita: primeiroID segundoID:"

Sim chega a ir à base de dados porque consigo fazer a inserção na base de dados. Só que aparecem todos os dados a espaços. Vem tudo a vazio.

Este é o retorno da consola do Arduino:

Starting Arduino Web Client.
connecting...
connected
GET /temperature_process_get.php?
ID1 = 
primeiroID 
&&
ID2 = 
segundoID 
HTTP/1.1
Host: 
Host: 
Content-Type: application/x-www-form-urlencoded
Connection: close

O que é que a variável server tem dentro?

Como é que aparece Host duas vezes no serial port?

Coloca isto no teu php.

echo $_SERVER['QUERY_STRING'];

Tira a parte da base de dados e experimenta só isto. Isto dar-te-á uma indicação de onde estará o problema.

Como é que aparece um espaço entre ID e = no output da consola? Não tens isso no código.

O de aparecer o espaço fui eu que alterei. A variável "server" no mysql_connect estava apenas com localhost, alterei para o IP do servidor e nada... agora não me aparece os "echo's" do PHP.

Coloquei também o [u]echo $_SERVER['QUERY_STRING'];[/u] mas não imprimiu vazio.

https://wordpress.org/support/topic/use-_get

Vê por aqui... Isso pode ser algo com as configurações do php. Tem uma solução aí.