données wifly et code php qui n'affiche rien

]:smiley: bonjour

toujours dans la galèrrrrrrrrrrre

j’ai une arduino rev 3 avec une grove base shield v2 dessus. il y a 3 capteur grove dessus un dth11 un barometre un un capteur de luminosité. j’ai relié un rn 171 dessus. le rn s’associe avec mon réseau wifi.

le code sur arduino fonctionne sur le moniteur série j’ai les résultats qui s’affiche.

pin arduino 3.3 v sur 3.3v rn
pin gnd sur gnd rn
pin rx sur tx rn
pin tx sur rx rn

sur le rapsberry, j’ai un serveur lighhtpd qui tourne si j’envoie <? php echo "grrr";?>, cela fonctionne mais dès que j’envoie le code ci dessous rien ne s’affiche et nada dans la base de données. Ma requete get est set com remote GET$/rnpl.php?value1=temperature&value2=pressure&value3=Rsensor&value4=h

voici les différents codes si quelqu’un voit une erreur.
merci

code arduino

/* Barometer demo V1.0
* Based largely on code by  Jim Lindblom
* Get pressure, altitude, and temperature from the BMP085.
* Serial.print it out at 9600 baud to serial monitor.
*
* By:http://www.seeedstudio.com
*/
#include "Barometer.h"
#include <Wire.h>

/*
* WiFlyHQ Example httpclient.ino
 *
 * This sketch implements a simple Web client that connects to a 
 * web server, sends a GET, and then sends the result to the 
 * Serial monitor.
 *
 * This sketch is released to the public domain
 
 */
 
#include <WiFlyHQ.h>
//const char site[] = "192.168.0.10";
//#include <SoftwareSerial.h>
//SoftwareSerial wifiSerial(8,9);
WiFly wifly;


/* Grove - Light Sensor demo v1.0
* 
* Signal wire to A0.
* By: http://www.seeedstudio.com
*/
#include <math.h>

float temperature;
float pressure;
float atm;
float altitude;
Barometer myBarometer;


#define LIGHT_SENSOR A0//Grove - Light Sensor is connected to A0 of Arduino

float Rsensor; //Resistance of sensor in K


// Example testing sketch for various DHT humidity/temperature sensors
// Written by ladyada, public domain

#include "DHT.h"

#define DHTPIN A1     // what pin we're connected to

// Uncomment whatever type you're using!
#define DHTTYPE DHT11   // DHT 11 
//#define DHTTYPE DHT22   // DHT 22  (AM2302)
//#define DHTTYPE DHT21   // DHT 21 (AM2301)

// Connect pin 1 (on the left) of the sensor to +5V
// Connect pin 2 of the sensor to whatever your DHTPIN is
// Connect pin 4 (on the right) of the sensor to GROUND
// Connect a 10K resistor from pin 2 (data) to pin 1 (power) of the sensor

DHT dht(DHTPIN, DHTTYPE);

void setup(){
  Serial.begin(9600);
  myBarometer.init();
  dht.begin();
  
  wifly.begin(&Serial);
  
  // if (wifly.open(site, 80)) {
  // Serial.print("Connected to ");
  // Serial.println(site);
//}
}

void loop()
{
   temperature = myBarometer.bmp085GetTemperature(myBarometer.bmp085ReadUT()); //Get the temperature, bmp085ReadUT MUST be called first
   pressure = myBarometer.bmp085GetPressure(myBarometer.bmp085ReadUP());//Get the temperature
   altitude = myBarometer.calcAltitude(pressure); //Uncompensated caculation - in Meters 
   atm = pressure / 101325; 
  
  Serial.print("Temperature: ");
  Serial.print(temperature, 2); //display 2 decimal places
  Serial.println("deg C");

  Serial.print("Pressure: ");
  Serial.print(pressure, 0); //whole number only.
  Serial.println(" Pa");

  Serial.print("Related Atmosphere: ");
  Serial.println(atm, 4); //display 4 decimal places

  Serial.print("Altitude: ");
  Serial.print(altitude, 2); //display 2 decimal places
  Serial.println(" m");

  Serial.println();

  delay(1000); //wait a second and get values again.

int sensorValue = analogRead(LIGHT_SENSOR); 
    Rsensor = (float)(1023-sensorValue)*10/sensorValue;
     Serial.println();
    Serial.println("the sensor light is ");
    Serial.println(Rsensor,DEC);//show the ligth intensity
     Serial.println();

// Reading temperature or humidity takes about 250 milliseconds!
    // Sensor readings may also be up to 2 seconds 'old' (its a very slow sensor)
    float h = dht.readHumidity();
    float t = dht.readTemperature();

    // check if returns are valid, if they are NaN (not a number) then something went wrong!
    if (isnan(t) || isnan(h)) 
    {
        Serial.println("Failed to read from DHT");
    } 
    else 
    {
        Serial.print("Humidity: "); 
        Serial.print(h);
        Serial.println(" %\t");
        Serial.println();
        }

   
}

code php

<?php 



//sensor
$capteur_LUX ="LUX_EXT";
$capteur_TH="TH_EXT;
$capteur_BAR="BAR_EXT"

//grab the GET data

$valor_t=$_GET['value1'];
$valor_p=$_GET['value2'];
$valor_lux=$_GET['value3'];
$valor_h=$_GET['value4'];

//date_time
$date=date("d-m-Y-H-i");

echo ("h $valor_h; t $valor_t; p $valor_p; lux $valor_lux");
//connect database 
mysql_connect("rapsberry","root","poi") or die("lulu");
mysql_select_db("db_rheorthe") or die ("coco");

$Sql_TH_EXT="INSERT INTO tbl_Temp_Ext (Capteur,Humidite,Temperature,Date_temperature)  VALUES ('$capteur_TH','".$_GET['value1']."', '".$_GET['value4']."','$date')"; 

$Sql_Pressure="INSERT INTO tbl_Pression (Capteur,Pression,Date_Pression) VALUES ('$capteur_BAR','".$_GET["value2"]."', '$date')"; 

$Sql_LUX="INSERT INTO tbl_Lux (Capteur,Lux,DateLux) VALUES ('$capteur_LUX','".$_GET["value3"]."', '$date')"; 

mysql_query($Sql_TH_EXT);
mysql_query($Sql_Pressure);
mysql_query($Sql_LUX);
mysql_close();

?>

bonjour,
déjà ton php
pourquoi mettre des variables qui correspondent au $_GET si c'est pour remettre les $_GET après?

$Sql_TH_EXT="INSERT INTO tbl_Temp_Ext (Capteur,Humidite,Temperature,Date_temperature)  VALUES ('$capteur_TH','".$_GET['value1']."', '".$_GET['value4']."','$date')";
$Sql_TH_EXT="INSERT INTO tbl_Temp_Ext (`Capteur`,`Humidite`,`Temperature`,`Date_temperature`)  VALUES ('$capteur_TH','$valor_t', '$valor_h','$date')";

dans le code du nono, elle est ou la requête?
la connexion au server?

merci de ta réponse.

effectivement, à force de faire du code, j'essaie pas mal de truc avant de poster donc c'est un reste non effacé.

pour la requête, dis moi si je me trompe :~, il me semble avoir lu qu'en branchant le rn171 en direct, il envoie sur le port série de l'arduino (initialisé par wifly.begin(&Serial); en IDE) les données que je passe en requête par la commande :

set com remote GET$/rnpl.php?value1=temperature&value2=pressure&value3=Rsensor&value4=h

merci

bonjour

effectivement, sut les conseils de infobarquee, cela ne passe pas en direct en codant le rn XV. j’essaie donc de faire une connection au serveur et un GET mais :fearful: je suis trop mauvais sur ce coup…

j’ai sur le moniteur série "open connection 192.168.0.1 : 80

et plus rien. Qu’est ce que j’ai mélangé??? :.

merci

/* Barometer demo V1.0
* Based largely on code by  Jim Lindblom
* Get pressure, altitude, and temperature from the BMP085.
* Serial.print it out at 9600 baud to serial monitor.
*
*
*/
#include "Barometer.h"
#include <Wire.h>

/*
* *
 * This sketch implements a simple Web client that connects to a 
 * web server, sends a GET
 *
 * This sketch is released to the public domain
 
 */
 
#include <WiFlyHQ.h>
//const char site[] = "192.168.0.10";
#include <SoftwareSerial.h>;
SoftwareSerial wifiSerial(8,9);


//RN-XV VCC (Pin 1) – Regulated 3.3V
//RN-XV GND (Pin 10) – GND
//RN-XV TX (Pin 8) – Arduino Serial1 RX
//RN-XV RX (Pin 9) – Arduino Serial1 TX//

WiFly wifly;
const char site[] = "192.168.0.11"; //ip web server

/* Grove - Light Sensor demo v1.0
* 
* Signal wire to A0.
* 
*/
#include <math.h>

float temperature; //barometer
float pressure;
float atm;
float altitude;
Barometer myBarometer;

#define LIGHT_SENSOR A0//Grove - Light Sensor is connected to A0 of Arduino

float Rsensor; //Resistance of sensor in K


// Example testing sketch for various DHT humidity/temperature sensors
// Written by ladyada, public domain

#include "DHT.h"
float h; //humidity DTH
float t; //tempeature DTH
#define DHTPIN A1     // what pin we're connected to

// Uncomment whatever type you're using!
#define DHTTYPE DHT11   // DHT 11 
//#define DHTTYPE DHT22   // DHT 22  (AM2302)
//#define DHTTYPE DHT21   // DHT 21 (AM2301)

// Connect pin 1 (on the left) of the sensor to +5V
// Connect pin 2 of the sensor to whatever your DHTPIN is
// Connect pin 4 (on the right) of the sensor to GROUND
// Connect a 10K resistor from pin 2 (data) to pin 1 (power) of the sensor

DHT dht(DHTPIN, DHTTYPE);

void setup()
{
  Serial.begin(9600);
  myBarometer.init(); //init barometer
  dht.begin(); //init dht
  
  wifly.begin(&Serial);
 //join network 
  if (wifly.join()) {
	    Serial.println("Joined wifi network");
	} 
        else {
	    Serial.println("Failed to join wifi network");
            
	     }



}

void loop()
{
   
   SendData(); 
   
}

  

void SendData()

{
//join site
if (wifly.open(site, 80)) 
     { 
        Serial.print("Connected to ");
	Serial.println(site);
        delay (200);
	}
if (wifly.available() > 0) {
  
        GetData();
        char c = wifly.read();
        Serial.write(c);
        if (c == '\n') {
	    /* add a carriage return */ 
	    Serial.write('\r');
        }
        
}

if (wifly.isConnected()){

/* Send the request */
	wifly.println("GET //rnpl.php?value1=temperature&value2=pressure&value3=Rsensor&value4=h");
	wifly.println();

    } 
    
    else
    {
        Serial.println("Failed to connect");
        wifly.close();

    }
  
}

  void GetData(){
  
  temperature = myBarometer.bmp085GetTemperature(myBarometer.bmp085ReadUT()); //Get the temperature, bmp085ReadUT MUST be called first
   pressure = myBarometer.bmp085GetPressure(myBarometer.bmp085ReadUP());//Get the temperature
   altitude = myBarometer.calcAltitude(pressure); //Uncompensated caculation - in Meters 
   atm = pressure / 101325; 
  
  Serial.print("Temperature: ");
  Serial.print(temperature, 2); //display 2 decimal places
  Serial.println("deg C");

  Serial.print("Pressure: ");
  Serial.print(pressure, 0); //whole number only.
  Serial.println(" Pa");

  Serial.print("Related Atmosphere: ");
  Serial.println(atm, 4); //display 4 decimal places

  Serial.print("Altitude: ");
  Serial.print(altitude, 2); //display 2 decimal places
  Serial.println(" m");

  Serial.println();

  delay(1000); //wait a second and get values again.

int sensorValue = analogRead(LIGHT_SENSOR); 
    Rsensor = (float)(1023-sensorValue)*10/sensorValue;
     Serial.println();
    Serial.println("the sensor light is ");
    Serial.println(Rsensor,DEC);//show the ligth intensity
     Serial.println();

// Reading temperature or humidity takes about 250 milliseconds!
    // Sensor readings may also be up to 2 seconds 'old' (its a very slow sensor)
    delay (2000);
    h = dht.readHumidity();
    t = dht.readTemperature();

    // check if returns are valid, if they are NaN (not a number) then something went wrong!
    if (isnan(t) || isnan(h)) 
    {
        Serial.println("Failed to read from DHT");
    } 
    else 
    {
        Serial.print("Humidity: "); 
        Serial.print(h);
        //Serial.println(" %\t");
        // Serial.println();
        }

J'ai l'impression que tu essayes tout au pif ... déjà comment veux tu te connecter au wifi sans SSID et sans mot de passe ?

Ensuite rien que ça :

wifly.println("GET //rnpl.php?value1=temperature&value2=pressure&value3=Rsensor&value4=h");

La t'envois réellement "GET //rnpl.php?value1=temperature&value2=pressure&value3=Rsensor&value4=h", pas avec les variables à la place de temperature, pressure ....

bonjour

merci pour les réponses.

j’ai procédé, en fonction de mes lectures. je pensais avoir compris que les commandes tapées en direct dans le wifly permettaient de ne pas les remettre dans le code d’ou l’absence de ssid et de mot de passe…

Pour le GET, je me suis basé sur le fait qu’en banchant directement le wifly sur l’arduino, on devait avoir directement les données envoyées par le wifly en série sur l’arduino c’est pourquoi j’ai essayé en direct mais nada. j’ai pris cette syntaxe sur un site mais je n’arrive plus à trouver ce fichu lien. Par rapport à la doc (extrait ci dessous), il rajoutait set com remote GET$/server3.php?value=xxx&value2=xxx

The module can post serial UART data in ASCII or binary format automatically. In this
example, when the serial UART data comes in, the module connects and sends data
to the web server in the following format:
GET /server.php?value= \n\n…

set com remote GET$/server3.php?value=

d’ou suivant les 2 points ci dessus

wifly.println(“GET //rnpl.php?value1=temperature&value2=pressure&value3=Rsensor&value4=h”);

un truc sur, c’est que je n’ai vraiment rien :zipper_mouth_face: :.compris. Donc, si je résume :
-je dois passer les commandes dans le code ssid, mp…
-le GET, si j’envoie seulement GET //rnpl.php?value= , cela renvoie de façon "concaténer " ce qui passe par la voie série du wifly vers la voie série de l’arduino ce qui correspondrait dans l’exemple httpclient de la librairie wifly à

if (Serial.available() > 0) {
	wifly.write(Serial.read());

si vous avez un exemple concret pour m’aiguiller :%

merci

Y'a quand même pas mal d'exemple dans la librairie, notamment celui la :

ou celui la

merci

j'ai essayé et j'obtiens bien la page par défaut de mon serveur. ce que je ne comprends pas c'est comment envoyer- la syntaxe --pour mes 4 variables par le biais de la requête GET. mais cela représente l'ensemble des 4 variables envoyées en série ou on peut différencier les variables

get mypage.php?var=something
ou
get mypage.php?var=something&var2=else comme le marqué le site que je n'arrive plus à retrouver

ici, Différence entre POST et GET - Page 1 - yAronet, il est écrit comme exemple

$_GET est un tableau superglobal (accessible de partt donc) qui contient tte les variables passées en parametre par url, type : machin.php?a=1&b=2 etc ...
$_GET['a'] => 1
$_GET['a'] => 2

merci

Si je reprend ta requête GET //rnpl.php?value1=temperature&value2=pressure&value3=Rsensor&value4=h, deux solutions :

  • utiliser sprintf() (y'a plein de tuto sur le net) puis faire un println() de la chaine construite
  • faire comme l'exemple WebSocketclient.ino :
   wifly.print(F("GET //rnpl.php?value1="));
    wifly.print(temperature);
    wifly.print(F(&value2=));
    wifly.print(pressure);
    wifly.print(F("&value3="));
    wifly.print(Rsensor);
    wifly.print(F("&value4="));
    wifly.println(h);

tu mets pas un peu trop de println B@tto? :wink:
un seul à la fin suffit, non?
sinon tu valides à chaque coup la variable et termine la ligne de la requête.

oups mauvais copier/coller ':slight_smile:

corrigé !

UN GRAND MERCI à tous. j’explore les pistes $)

B@tto:
oups mauvais copier/coller ':slight_smile:

corrigé !

héhéhé :grin:

bon j'ai essayé la solution 1 et en suivant ce tuto
[, http://www.areaprog.com/c/article-244-sprintf-formater-une-chaine-de-caracteres-et-placer-le-resultat-dans-une-variable](http://, http://www.areaprog.com/c/article-244-sprintf-formater-une-chaine-de-caracteres-et-placer-le-resultat-dans-une-variable)

si j'ai bien compris, sprintf ne prend pas le type float donc cela ne marche pas. la solution numero 2....je n'arive pas à la rendre fonctionelle...la quiche

je suis aussi tombé sur cette librairie mais elle ne me sort que des erreurs de code (mauvaise manip??). l'auriez vous déjà testée?
https://gist.github.com/asheeshr/9004783/download#]](https://gist.github.com/asheeshr/9004783/download#)

j'ai aussi cela
http://crema.josh.to/rebuilding-the-arduino-ide-to-support-sprintf-with-floats/[/ur

mais avant de flinguer une carte, est ce valide ?

infobarquee
quand tu dis

sinon tu valides à chaque coup la variable et termine la ligne de la requête.

:grin: désolé mais je ne vois pas...vraiment désolé de débarquer mais j'ai du mal

merci

Oublie les float pour le moment, une chose à la fois ...

sinon tu valides à chaque coup la variable et termine la ligne de la requête.

smiley-mr-green désolé mais je ne vois pas...vraiment désolé de débarquer mais j'ai du mal

Ca c'était pour moi :wink: dans mon code j'avais utilisé println() à toutes les lignes, ce qui pose problème puisque le retour chariot qui signifie "fait partir la requête", donc je je n'aurais envoyé que des bouts de requêtes à chaque fois. Mais j'ai corrigé mon post, et maintenant avec ce code je remplis la mémoire du shield avec des print() et sur le dernier je fais println() ce qui rajoute le retour chariot et fait partir la requête dans son ensemble d'un seul coup, pas besoin de sprintf() alors, et en plus les float sont géré par la classe print :wink:

ok bon j'avance je me connecte mais toujours pas de valeur dans la table.
j'ai pris le croquis d'exemple httpclient livré avec la librairie wiflyHQ en mettant mes paramètres.

Dans la section opensite, quand je mets

if (wifly.open(site, 80)) {
        Serial.print("Connected to ");
	Serial.println(site);

	/* Send the request */

       // float h=12.11111;
              
	wifly.println("GET //rnpl.php HTTP/1.0");
	wifly.println();

je me connecte et j'ai l'affichage d'un echo de test.

Si je mets

if (wifly.open(site, 80)) {
        Serial.print("Connected to ");
	Serial.println(site);

	/* Send the request */

        float h=12.11111;
        wifly.print(F("GET //rnpl.php?value3="));
	
        wifly.println(h);
        //wifly.println (" HTTP/1.0"); ou  //wifly.println (F (" HTTP/1.0"));
);

J'ai cela mais nada dans la base =(

Starting
Free memory: 1093
Already joined network
MAC: 00:06:66:55:f5:fb
IP: 192.168.0.22
Netmask: 255.255.255.0
Gateway: 192.168.0.1
DeviceID: Wifly-WebClient
Old connection active. Closing
close: got *CLOS*
open 192.168.0.11 80
Connected to 192.168.0.11

déjà
est ce que tu es bien connecté au wifi?

arpès

        wifly.print(F("GET //rnpl.php?value3="));

ca serait pas

        wifly.print(F("GET /rnpl.php?value3="));

bonjour

je me connecte sans problème. un echo "test" mis dans le fichier rnpl.php apparait mais pas moyen de faire passer une valeur.

wifly.print(F("GET /rnpl.php?value3="));

ou

wifly.print(F("GET //rnpl.php?value3="));

cela donne rien

wifly.print(F("GET /rnpl.php? HTTP/1.0"); avec dans rnpl.php un echo ("test"); passe.

as tu regardé les logs de ton server?
ca serait bien de commencer par là, non?

En plus, est-ce que t'es bien sûr que ça déconne niveau Arduino ? Autant le problème vient de ton php