invio dati da arduino a db mysql attraverso GPRS (shield 2)

di nuovo ciao,
Premetto che ho letto una buona quantità di post sull’argomento che è stato dibattuto, ma evidentemente sono un po’ duro di testa.
Il topic a cui mi ispiro è questo perchè mi sembra semplice:

inoltre ho seguito questo video:Tutorial : Arduino Save data to database using GPRS shield - YouTube

Perfetto, veniamo ai codici:
Arduino:

// libraries
#include <GSM.h>

// PIN Number
#define PINNUMBER ""

// APN data
#define GPRS_APN       "tre.it" // replace your GPRS APN
#define GPRS_LOGIN     ""    // replace with your GPRS login
#define GPRS_PASSWORD  "" // replace with your GPRS password

// initialize the library instance
GSMClient client;
GPRS gprs;
GSM gsmAccess;

// URL, path & port
char server[] = "http://miosito.altervista.org/";
char path[] = "/write_data2.php";
int port = 80; // port 80 is the default for HTTP

//Example Button
int Boton = 4;

//The variable that will have the data as a string to send it, i read sending an int with POST may cause trouble
String txtBoton="";

void setup(){
  // initialize serial communications and wait for port to open:
  Serial.begin(9600);
 
  //Establish pin 4 as an INPUT
  //pinMode(Boton, INPUT); commentato io
 
  while (!Serial) {
    ; // wait for serial port to connect. Needed for Leonardo only
  }

  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(){
  int estadoBoton = 5;
 
  //print the state of the button in the Monitor Serial
  Serial.println(estadoBoton);
 
  //convert the button state in string to send it
  //Estado_Boton is the variable that the POST method will search for
  txtBoton= "Estado_Boton="+(String(estadoBoton));
 
  //
 
  // if you get a connection, report back via serial:
  if (client.connect(server, port))
  {
    Serial.println("conected and sending data");
    // Make a HTTP request:
    client.print("POST ");
    client.print(path);
    client.println(" HTTP/1.1");
    client.print("Host: ");
    client.println(server);
    client.println("Connection: close");
    client.print("Content-Type: application/x-www-form-urlencoded\n");
    client.print("Content-Length: ");
    //PHP page needs to know how many characters the data has
    client.println(txtBoton.length());
    client.print("\n\n");
    //finally the data that is being send to the server
    client.print(txtBoton);
   
    //Just to know what i am sending
    Serial.print("Variable: ");
    Serial.println(txtBoton);
    Serial.print("Variable Length: ");
    Serial.print(txtBoton.length());
    
  }
  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
 
}

Mentre il php:

<?php
$conex = mysql_connect("http://miosito.altervista.org/","miosito@localhost","");

if(!$conex){
    die("attenzione non è possibile connettersi al server 
".mysql_error());
}


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

if(!$db){
    die("attenzione, non è possibile connettersi al database 
".mysql_error());
}


//$Estado_Boton = $_POST["estadoBoton"];


$sql = "INSERT INTO apidata (temperature) VALUES ('".$_GET["txtBoton"]."') ";   

$res = mysql_query($sql, $conex);

?>

per ultimo vi incollo una versione stampa di come è settato il mio database

Ora l’output del monitor seriale:

Starting Arduino Web Client.
connecting...
5
conected and sending data
Variable: Estado_Boton=5
Variable Length: 14

Problema:
Non riesco a scrivere i dati sul mio database, oppure non sono capace di capire se ce li ho scritti!

Per controllare se qualche dato è entrato nella tabella esporto un pdf, ma a parte il nome delle colonne non c’è altro.

Dove sbaglio?
grazie, perchè so che sapete cosa provo

mozilla.pdf (26 KB)

Mentre vi prendete tutto il tempo necessario ad aiutarmi io vi aggiorno: Ho indagato sul forum di altervista, il provider a cui mi appoggio. Cercando di capire se le credenziali di accesso erano corrette, mi hanno detto che: quoto

Non puoi collegarti al database su Altervista dall'esterno.

Non puoi connetterti direttamente al DB. Puoi usare una pagina PHP come proxy per le richieste verso il DB.

mah... che è il caso di cambiare provider? oppure è così ovunque?

pandaro: mah... che è il caso di cambiare provider? oppure è così ovunque?

Per ragioni di sicurezza e così praticamente ovunque.

Devi scriverti un modulo di interfaccia in PHP che riceve i tuoi messaggi ed esegue quello che c'è da fare sul server mySQL fornedoti le risposte.

Occhio ad implementare dei meccanismi di password e quant'altro perché ... in un attimo hai "il mondo" che cerca di entrarti sul programma PHP e quindi sul DB.

Guglielmo

Risolto! per chi dovesse avere problemi: assicurarsi che il provider supporti la rete GSM senza la necessità di lavorare in combinazione con quella UMTS. Nel mio caso "tre" necessita di rete UMTS.

ora penserò al lato sicurezza