Bonjour,
Dans le cadre d'un projet, je cherche a faire remonter des informations (humidité, température) sur une base de donnée mysql sur un hébergement ovh, via un script php, et une requête GET.
Mon fichier add.php
<?php
try
{
$bdd = new PDO('mysql:host=[s]login[/s].mysql.db;dbname=[s]login[/s];','[s]login[/s]','[s]pass[/s]');
}
catch(Exception $e)
{
die('Erreur : '.$e->getMessage()); // En cas d'erreur, on affiche un message et on arrête tout
}
// test si la variable existe
if (isset($_GET['temp']) && isset($_GET['hum']))
{
$bdd->exec('INSERT INTO templog (`temperature`, `humidity`) VALUES ('.$_GET["temp"].', '.$_GET["hum"].')');
}
?>
Le script fonctionne, si je l’exécute manuellement via cette requête :
http://domaine.fr/add.php?temp=*25*&&hum=*98*
Les deux valeurs sont bien ajouté a la base de donnée.
Maintenant, j'aimerais que les valeur provienne d'un capteur de mon arduino. La captation de temperature et d'humidité sont OK dans la console, la requete est censé etre ecrite d'apres la console, mais je n'ai rien en DB.
Mon fichier capteur.ino :
// Ces deux bibliothèques sont indispensables pour le shield
#include <SPI.h>
#include <Ethernet.h>
#include <DHT.h>
#define DHTPIN 2
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);
// L'adresse MAC du shield
byte mac[] = { 0x90, 0xA2, 0xDA, 0x0E, 0xA5, 0x7E };
IPAddress ip(192,168,1,53);
IPAddress server(213,0,0,4); // /!\ /!\ /!\ (adresse fictive) Ici j'ai un doute sur l'adresse du serveur, je ne sais pas comment la recuperer via mon hebergement ovh (mais ne fonctionne pas non plus en local)...[/b]
EthernetClient client;
void setup()
{
// démarrage la voie série
Serial.begin(9600);
/*------------------------SHIELD ETHERNET------------------------*/
if (Ethernet.begin(mac) == 0) {
Serial.println("Erreur utilisation DHCP");
Ethernet.begin(mac, ip);
}
Serial.println("Init...");
// Donne une seconde au shield pour s'initialiser
delay(1000);
Serial.println("Pret !");
Serial.print("@IP Arduino : ");
Serial.println(Ethernet.localIP());
Serial.println();
/*------------------------/SHIELD ETHERNET------------------------*/
}
void loop() {
/*------------------LECTURE TEMPERATURE/HUMIDITY------------------*/
dht.begin();
float h = dht.readHumidity();
float t = dht.readTemperature();
if (isnan(h) || isnan(t)) {
Serial.println("Failed to read from DHT sensor!");
return;
}
Serial.println("Lecture temperatures...");
Serial.print(t);
Serial.println(" degrees");
Serial.print(h);
Serial.println(" %");
Serial.println();
/*------------------/LECTURE TEMPERATURE/HUMIDITY------------------*/
/*----------------------------REQUETE----------------------------*/
if (client.connect(server, 80)) {
Serial.println("Requete GET...");
client.print( "GET /add.php?");
client.println("Host:domaine.fr");
client.print("temp=");
client.print(t);
client.print("&&");
client.print("hum=");
client.println(h);
client.println( "Connection: close" );
client.stop();
client.println();
Serial.println("donnees ecrites");
}
else
{
Serial.println("problème de connection");
}
/*----------------------------/REQUETE----------------------------*/
delay(30000); // attente en millisecondes
}
J'ai essayé plusieurs formulation de requete differente, mais rien n'y fait, en console tout semble OK, mais je n'ai rien d'ajouter en base.
Si quelqu'un a des details concernant la construction des requetes.
En vous remerciant,
Thomas.