Bonjour tout le monde,
Je fais appel à vos connaissance sur l'Ethernet shield d'Arduino ainsi que sur PHP. Je préfère vous prévenir je suis débutant dans ce domaine. ![]()
Alors voila, mon but est de publier sur un serveur internet distant (un LAMP classique sur Raspberry PI) des données de température provenant de l'Arduino, et donc d'alimenter une base de donnée sous SQlite. Pour cela j'ai configuré une requête HTTP POST qui transfère la valeur de la variable temp au serveur. Cela semble fonctionner puisque la réponse à la fonction client.read() est positive et correspond au résultat de la page test.php que j’héberge sur mon Raspberry.
Pour que cela soit plus clair, voici mon script Arduino :
#include <Ethernet.h>
#include <SPI.h>
byte mac[] = { 0x90, 0xA2, 0xDA, 0x0D, 0xF6, 0xFF };
byte ip[] = { 192, 168, 0, 9};
byte gateway[] = { x,x,x,x };
EthernetClient client;
String temp= "data=5";
void setup()
{
Ethernet.begin(mac, ip, gateway);
Serial.begin(9600);
Serial.println(Ethernet.localIP());
delay(1000);
delay(1000);
Serial.println("connecting...");
if (client.connect("192.168.0.55",80))
{
Serial.println("Sending to Server: ");
client.println("POST /test.php HTTP/1.1");
Serial.print("POST /test.php HTTP/1.1");
client.println("Host: 192.168.0.55");
client.println("Content-Type: application/x-www-form-urlencoded");
client.println("Connection: close");
client.println("User-Agent: Arduino/1.0");
client.print("Content-Length: ");
client.println(temp.length());
client.println();
client.print(temp);
client.println();
}
else
{
Serial.println("Cannot connect to Server");
}
}
void loop()
{
if (client.available()) {
char c = client.read();
Serial.print(c);
}
if (!client.connected())
{
Serial.println();
Serial.println("disconnecting.");
client.stop();
for(;;)
;
}
}
Et mon fichier test.php :
<?php
echo 'Temperature = ' . htmlspecialchars($_POST["data"]) . '!';
?>
Ainsi la réponse à client.read() sur le terminal de l'Arduino est 5, ce qui prouve que la requête fonctionne, ainsi que la partie PHP.
Cependant si je vais sur mon navigateur, à l'adresse http://192.168.0.55/test.php, seul "Temperature = " est affiché, la valeur (5 en l’occurrence) est absente.
Voila donc si quelqu'un sait comment remédier à ce problème d'affichage ça m'aiderait beaucoup. XD
Guillaume