Ciao a tutti ragazzi...sto provando a mandare dei valori da arduino ad un server locale (mio pc) tramite ethernet shield ma non riesco a recuperare i dati. Infatti la pagina a cui punta la stringa GET (temperatura.php) continua a dare errore di "Undefined index: temperatura in C:\xampp\htdocs\arduino\temperatura.php on line 4".
Qualche idea?????
Di seguito lo sketch di Arduino e la pagina php:
Arduino sketch:
#include <SPI.h>
#include <Ethernet.h>
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
IPAddress server(10,0,1,1); // numeric IP for server
// Set the static IP address of arduino
IPAddress ip(10, 0, 1, 2);
IPAddress subnet(255,255,255,0);
EthernetClient client;
String strURL = "";
float temp = 0;
int temperatura;
int piante=25;
void setup(){
Ethernet.begin(mac, ip,subnet);
delay(10);
}
void loop()
{
UpdateTemp();
if (client.available())
{
char c = client.read(); }
if (!client.connected()){
client.stop();
}
delay(60000); // esegui la richiesta ogni 60 secondi
temperatura=0;
for(int k=0;k<10;k++)
temperatura+=analogRead(A0);
temp = temperatura*50.0/1023;
temperatura= int(temp*10); // media di 10 valori
}
void UpdateTemp()
{
if (client.connect(server, 80)){
//creo l'url utilizzando una stringa
strURL = "GET /arduino/temperatura.php?temperatura= ";
strURL +=temperatura;
strURL +="&piante=";
strURL +=piante;
strURL +=" HTTP/1.1";
//invio la richiesta al server
client.println(strURL);
client.println("Host: arduino");
client.println("Connection: close");
client.println();
//chiudo la connessione
client.stop();
}
else
{
// errore di connessione
}
}
pagina "temperatura.php" che dovrebbe ricevere i dati da Arduino
<?php
echo "inizio pagina";
//Recupero il valore del parametro
$temperatura = $_GET["temperatura"];
var_dump($_GET["temperatura"]);
$temp=$temperatura/10.0;
$piante = $_GET["piante"];
echo $temperatura;
echo $piante;
//eseguo la connessione al database sul server locale
//inserendo nome utente e password
$_GLOBAL['pdo'] = new PDO("mysql:host=localhost:3306; dbname=serre2","admin", "admin")
or die ("impossibile connettersi al database $database");
$ora=date("H");
$giorno=date("d");
$mese=date("m");
$minuti=date("i");
echo "Giorno "; echo $giorno; echo"
";
echo "Mese "; echo $mese; echo"
";
echo "Ora "; echo $ora; echo"
";
echo "Minuti "; echo $minuti; echo"
";
//creo una stringa sql di inserimento con i valori
//recuperati dall'url
$sql = "INSERT INTO "."monitoraggio"."(giorno , mese , ora , minuti, serra, temperatura,piante)".
"VALUES('". $giorno."','".$mese."','".$minuti."','".$temp."','".$piante."')";
//eseguo la query
$res = $_GLOBAL['pdo']->query($sql);
?>
Ho fatto anche una verifica dall'access.log di Apache ed ecco quanto ho riscontrato (mi sembra di capire che la GET viene creata ed inviata correttamente):
10.0.1.2 - - [01/Jan/2020:19:34:17 +0100] "GET /arduino/temperatura.php?temperatura=652&piante=25 HTTP/1.1" 200 65 "-" "-"
10.0.1.2 - - [01/Jan/2020:19:35:17 +0100] "GET /arduino/temperatura.php?temperatura=652&piante=25 HTTP/1.1" 200 65 "-" "-"
Aiutooooooo!!!