Probléme d'écriture sur une base donnée PhP avec Arduino

Bonjour à tous ,
Voilà je suis un élève de Terminal STI2D spé SIN et dans mon projet je dois m’occuper de la base de donnée . Pour cette base j’ai choisie php et les données sont envoyer via arduino .

J’ai réussi a écrire les valeurs via L’URL de mon Hébergeur , mais le problème c’est que lorsque j’utilise ma carte arduino pour écrire des données sur la BDD la carte n’écris rien …
Pourtant la carte est censé être connecté car le message écrit dans le moniteur est : Connexion … Connected … Envoyer.

Pourtant lorsque je regarde ma base de donnée il n’y a aucune nouvelle donnée écrite .
Voici donc le programme qui me pose problème :

J’utilise une carte Arduino Uno et un Shield Ethernet 1 . Et pour le réseau j’utilise celui de mon lycée avec un switch car le routeur est inaccessible .

#include <SPI.h>
#include <Ethernet.h>
int temperature = 3;


byte mac[] = { 0x90, 0xA2, 0xDA, 0x0F, 0x2C, 0x3C };
char server[] = "http://projet.ch/add_temp.php";    

IPAddress ip(192, 168, ??, ??);

EthernetClient client;

void setup() {
Serial.begin(9600);
while (!Serial) {
  ;
}

if (Ethernet.begin(mac) == 0) {
  Serial.println("Failed to configure Ethernet using DHCP");
  Ethernet.begin(mac, ip);
}
delay(1000);
Serial.println("connecting...");
}

void loop() {
if (client.connect(server, 80)) {
  Serial.println("connected");
  client.println("GET http://projet.ch/add_temp.php?");
  client.println("temperature=");
  client.println(temperature);
  client.println(" HTTP/1.1");
  client.println("Host: ??.??.??.??");
  client.println( "Content-Type: application/x-www-form-urlencoded" );
  client.println("Connection: close"); 
  Serial.println("envoyer");
} 
else {
  Serial.println("connection failed");
}
delay(5000);
}

Voilà je vous remercie d’avance pour vos réponses . J’espère juste que ce n’est pas une erreur débile car il me reste juste a réussir a écrire une donnée et mon projet est fini . si vous avez besoin de plus d’info dites moi je ferais mon possible pour vous répondre .

Bonjour,

Que fait le code PHP appelé par l'Arduino ? C'est du côté du serveur web qu'il faut vérifier. Regarde les traces du serveur web et le code PHP.

Désolé du temps mis . Voici donc le code PHP qui sert a écrire les données via L’URL

<?php
try
{     // connection à la base de données
    $bdd = new PDO('mysql:host=localhost;dbname=projet', 'projet', 'MDP);
}
catch(Exception $e)
{
        die('Erreur : '.$e->getMessage());     // En cas d'erreur, on affiche un message et on arrête tout
}     
?>
<?php        
if (isset($_GET['temperature'])) // test si la variable existe
{
 $_GET['temperature'] = floatval($_GET['temperature']); // force le type float pour la variable
 echo ('donnee '.$_GET["temperature"]. ' en cours d\'ecriture
');
 $bdd->exec('INSERT INTO temperature (ID,temp,date) VALUES(NULL,'.$_GET["temperature"].',CURRENT_TIMESTAMP)');
 echo ('donnee ' .$_post['temperature']. ' ecrite!');
}
?>

Le truc c’est qu’en testant via l’URL directement cela fonctionne c’est uniquement à partir du moment ou je demande à ma carte arduino de passer par le .php il ne se passe rien dans la base de donnée.

Je pourrais uniquement tester demain . Je vous tiens au courant des événements .

Après la modification il y a toujours le message "connexion" et "envoyer" mais , aucune donnée a été écrite dans la base de donnée . :/ Serait-il possible que cela vienne de l'hébergeur qui bloque la connexion avec la carte arduino ?

possibilité de voir les logs du server? as tu testé de faire la requête via un navigateur?

Oui j'ai testé via un navigateur et cela fonctionne parfaitement les données vont dans la base de données . Pour les logs serveur j'ai regarder et il arrive que cela affiche "Login failed" et le reste du temps "Login Success"

http://www.noelshack.com/2016-13-1459495841-capture.png

Voici l'image des logs des connexions sur l'hébergeur avec l'IP de la carte ethernet . Il m'arrive d'avoir l'erreur 400 qui s'affiche dans le moniteur série de arduino .

as tu essayé en méthode POST plutôt qu'en GET ???

client.println("Connection: close");

ou est la ligne qui indique close?

quel type de server? wamp sous windaub, linux avec apache?

comment est configuré le server?

montre les vrais log il y a un user a indiquer pour la connexion?

Encore une fois désolé du retard .
J’ai trouvé la solution pour écrire dans la base de donnée en réalité il suffisais d’écrire comme ceci :

if (client.connect(server, 80)) {
    Serial.println("connected");
    // Make a HTTP request:
    client.println("GET /add.php?temperature=16 HTTP/1.1");
    client.println("Host: projet.nexgate.ch");
    client.println("Connection: close");
    client.println();
  }

Mais maintenant chaque problèmes réglés en crée de nouveaux .

Edit : Bon tout s’améliore j’ai réussi a savoir comment inséré une variable dans le protocole mais j’ai droit a cette magnifique erreur bien connu de tous

HTTP/1.1 200 OK
Server: nginx/1.9.3
Date: Mon, 04 Apr 2016 12:47:16 GMT
Content-Type: text/html; charset=UTF-8
Transfer-Encoding: chunked
Connection: close

272
<html>
<head>
<title>Error 404 - Page Not Found</title>
<meta http-equiv="Refresh" content="1;url=http://www.hostinger.fr/erreur_404" />
<script>
 (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
 (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
 m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
 })(window,document,'script','//www.google-analytics.com/analytics.js','ga');

 ga('create', 'UA-66279436-1', 'auto');
 ga('send', 'pageview');
 window.location = "http://www.hostinger.fr/erreur_404";
</script>
</head>
<body></body>
</html>

0