Re: Capteur pour plantes vertes - WIP - Les codes et pb d'alim

Bonjour à tous,

Je suis en ce moment sur un projet de multi capteurs pour plantes vertes dans la veine du parrot flower.
Il detecte l'humidité du sol, la temperature et l'humidité hambiante, la luminosité et allume une led si il faut arroser tout de suite.
Pour le moment mon capteur communique avec mon ordinateur via bluetooth mais je vais evoluer vers des modules 2.4ghz et un arduino recepteur avec un shiel ethernet pour correspondre avec la BDD Mysql pour le suivi et les stats (en fait derriere il y a un projet plus global avec http://encausse.wordpress.com/s-a-r-a-h/ )
Jusqu'a présent ça se passe pas mal et voici par exemple ce que ça donne :


et ce que ça affiche :

Comme je veux miniaturiser et placer le tout dans un bambou, qui sera visuellement plus sympa qu'un tas informe de cable, je tente l'arduino mini pro... mais il ne se laisse pas faire... le mechant ! J'ai la fatidique erreur : avrdude: stk500_getsync(): not in sync: resp=0×00
Vas falloir tester plein de trucs du coups (drivers, bootloader, cable, position des planetes, etc).

Bref, voila mon petit projet.
Si vous voulez en voir plus vous pouvez aller sur mon blog (on peut faire un lien de ce genre ici ?) ou je présente toute les étapes (et bientot le code et les plans)

Je vais de ce pas dans la section présentation.

A bientôt

David

bonjour
projet sympa
mais tu aurais du le poster dans la section generale
là comme tu l'indique toi meme , ce n'est pas fini :grin:

ha ben j'ai pas vu la section generale .... serait ce a la racine de la section france ??
Désolé !!

pixelgarden:
ha ben j'ai pas vu la section generale .... serait ce a la racine de la section france ??
Désolé !!

c'est pas un soucis , tu ne sera surement pas le dernier :grin:
oui c'est là où tu a directement la possibilité d'ouvrir un nouveau topic
c'est le meilleur endroit pour avoir de la visibilté pour un soucis.

sauf si un modo fait le transfere rapidement
le mieux est que tu supprime ton topic et que tu le recrée dans la bonne section

pixelgarden:
Bonjour à tous,

Je suis en ce moment sur un projet de multi capteurs pour plantes vertes dans la veine du parrot flower.
Il detecte l'humidité du sol, la temperature et l'humidité hambiante, la luminosité et allume une led si il faut arroser tout de suite.
Pour le moment mon capteur communique avec mon ordinateur via bluetooth mais je vais evoluer vers des modules 2.4ghz et un arduino recepteur avec un shiel ethernet pour correspondre avec la BDD Mysql pour le suivi et les stats (en fait derriere il y a un projet plus global avec http://encausse.wordpress.com/s-a-r-a-h/ )
Jusqu'a présent ça se passe pas mal et voici par exemple ce que ça donne :
et ce que ça affiche :
Comme je veux miniaturiser et placer le tout dans un bambou, qui sera visuellement plus sympa qu'un tas informe de cable, je tente l'arduino mini pro... mais il ne se laisse pas faire... le mechant ! J'ai la fatidique erreur : avrdude: stk500_getsync(): not in sync: resp=0×00
Vas falloir tester plein de trucs du coups (drivers, bootloader, cable, position des planetes, etc).

Bref, voila mon petit projet.
Si vous voulez en voir plus vous pouvez aller sur mon blog (on peut faire un lien de ce genre ici ?) ou je présente toute les étapes (et bientot le code et les plans)
Capteur maison Arduino - MAJ 21 mai 2014 - PlantesVertes.net

Je vais de ce pas dans la section présentation.

A bientôt

David

Hello, projet sympatique :wink:
Sur ton site tu devrais corriger l'année dans " MAJ 21 Mai 2015"

Par ailleurs, as-tu résolu ton problème d'upload dans la MiniPro? Quel adaptateur utilises tu?
Car pour en utiliser les connections sont très simples...

Si un admin pouvait deplacer mon post, ce serait fort sympathique... encore désolé.

Oui je vais modifier la date de la maj du blog, comme quoi ecrire quand on est eclaté de fatigue a certains effets de bords...

Non je n ai pas resolu mon soucis avec le mini, j utilise ce truc http://letmeknow.fr/shop/accessoires/102-convertisseur-uart-usb.html et j ai eu de gros soucis de reconnaissance sous windows sur deux ordis w7.

Je vais tenter de voir sous linux si ca le fait aussi. La perspective de s occuper du bootloader ne me plait pas vraiment. Je vais aussi souder des fils, la broche etant un peu lache peut etre que des micro coupures font foirer l upload.

Le mini pro clignote en bleu, je ne sais pas vraiment ce que cela veux dire... je vais chercher la doc de ce clone.

Je n ai pas encore poussé mes recherches la dessus pour le moment. mais je ne desespere pas, ca fait partie du jeu.

David

pixelgarden:
...
Non je n ai pas resolu mon soucis avec le mini, j utilise ce truc Arduino, Raspberry Pi, Adafruit, Imprimantes 3d - Letmeknow et j ai eu de gros soucis de reconnaissance sous windows sur deux ordis w7.
...

Peu de risques que ce soit un probleme de bootloader.
c'est tres surement plus un probleme de reconnaissance du driver qui genere le port comx utilisable
ton adaptatateur simplement connecté sur un USB , il est vu dans le panneau de config de tes W7 sous un COMx ?
tu a fait l'install en temps qu'administrateur ?
pour s'en servir en tant que programmateur externe avec un arduino , il faut utiliser la ligne RTS
tu le cable comment exactement ton adaptateur sur ta mini pro ?
de plus im semble qu'il y a deux versions de minipro une en 3.3V l'autre en 5V
et en 2 version d'horloge (8 et 16)
tu a quelle version ?

Il faut être sûr que ton programmateur est bien reconnu.

Au premier lancement, il y avait le programme blink dans sa mémoire qui fait clignoter la led pin 13

Sur le miens je suis obligé de mette rx sur rx et tx sur tx contrairement à tous les schémas que j'ai trouvé sur le net et il faut que j'appuis sur le bouton reset dès que l'ide à terminé la compilation, au moment ou il affiche le poid du programme.

Pour le moment je ne cherche pas du côté bootloader effectivement.
Sous mes windows 7, j ai installé les drivers de l uart usb, l ordi monte le port, mais je ne vois pas le mini pro. Avec le uno c est bien marqué uno. Bon comme l usb est avant le mini, je pense que windows verra plus l interface d echange que le mini derriere.
Je cable en 5v, tx sur rx et vice versa, plus le gnd bien sur. C est un 16 au fait.
Je posterai des photos demain justement.
Je pensais bien que c etait un blink de base. Je vais tenter le reset, j avais vu ça mais je ne savais pas quand le faire. Je tenterai aussi rx sur rx, sait on jamais.
Je dois aussi tester sous linux ou la facon de voir les usb est differente. Mais j ai un peu peur des drivers plus ou moins foireux.
C est dommage que je bloque la dessus, j aurai aimé me concentrer sur le shiel Ethernet et la connexion mysql. C est le jeu...

pixelgarden:
Je dois aussi tester sous linux ou la facon de voir les usb est differente. Mais j ai un peu peur des drivers plus ou moins foireux.

Jamais eu de problème sous Linux aussi bien avec des adaptateurs utilisant le chip FTDI qu'avec ceux utilisant le chip Prolific.

pixelgarden:
Je cable en 5v, tx sur rx et vice versa, plus le gnd bien sur. C est un 16 au fait.

Si tu ne câbles pas le le DTR sur le Reset il faut en plus jongler avec le Reset manuel.

bon ben j'ai tenté le reset manuel au moment de l 'affichage du poids... un clic, douze clic, clic maintenu.. rien !!
Voila le montage initial :


et la board et le connecteur usb :

Donc au final je n'ai pas de reset a partir de l'usb ou alors je vois pas comment faire.

Voici comment ça se passe dans le panneau de config :

Comme je le disais, le uno se voit dans le panneau de config mais le mini pro non !!

J'ai tenté sur deux ordis différents, avec des cables usb différents... ben ça marche pas ! ou alors c'est le truc bete que je vois pas du tout...

pour me simplifier la vie, je vais commander un mini avec usb incorporé, parceque la ça tendance a me tendre un poil.

Je crois que j'ai lu quelque part un truc sur un upload via bluetooth... faudrait que je tente.

Je viens a l'instant de reussir a uploader un prog... pfioo... je suis passé en 3v et arduino mini pro correspondant. ET CA MARCHE !!

Ensuite je repasse en 5V et hop c'est good !!

Foireux quand meme !

pixelgarden:
...

Voici comment ça se passe dans le panneau de config :

Comme je le disais, le uno se voit dans le panneau de config mais le mini pro non !!

J'ai tenté sur deux ordis différents, avec des cables usb différents... ben ça marche pas ! ou alors c'est le truc bete que je vois pas du tout...

Bonsoir
je crois tu te melange un peu
on va proceder "tranquille"
le uno se voit dans l'enumeration des port com , parce que son controleur usb genere l'info "uno"
la ton adaptateur est le prolific (com8) , lorsque tu le retire du port usb , il disparait du panneau de config et lorsque tu le remet il reapparait ?

Bon edit : il semble que tu ai solutionner ton probleme :grin:

Pfiooo ! Et ben il semble qu'un nouveau né a certaines conséquences sur le temps libre !!! :grin:

Je profite de temps de dodos un poil plus long pour continuer mon projet.

Dernieres news :

J'ai passé le projet sur nRF24L01+ avec d'un coté le capteur humidité du sol, humidité de l'air, temperature, lumiere et de l'autre coté un "serveur" avec un shield ethernet et une led d'alerte secheresse.

(les codes arrivent et les schemas aussi)

le coté capteurs balance correctement les données, le serveur les reçoient sans soucis et il cré un xml avec les données. OUF !

Je me base sur ça http://geeklaboratories.com/408-comment-monitorer-le-climat-de-son-domicile-avec-arduino
et la... j'ai un soucis sur le coté Base de donnée.
LA base ne se remplit pas, alors que la connection vers elle est bonne.
Je pense que je ne l'ai pas structuré correctement, y a pas de doc sur l'article pour cette partie .
Si y a des pro de SQL/php dans le coin je suis super preneur et soulagera mes cheveux d'un arrachage malvenue.

En vous remerciant.

PS : Comment montrer le code sur le forum ? Insert quote ou y a un truc special code ?
Vous me conseillez quoi pour illustrer le montage et ainsi partager ?

Comme promis voici mes codes :

en premier le code du capteur avec :un nRF24L01+, un dht11 (humidité air + temperature, sonde humidité sol, luminosité et une tentative de sleep mais j'en reparle a la fin.

//***********************************************************************************************************/
// Programme du capteur BambooProbe Humidité du sol, humidité de l'air, température de l'air et Luminosité
// 
// Code nRF24L01+ inspiré de http://geeklaboratories.com/408-comment-monitorer-le-climat-de-son-domicile-avec-arduino
// 
// David M - plantesvertes.net
//***********************************************************************************************************/
// La library sleep mode
#include <Sleep_n0m1.h>
Sleep sleep;
unsigned long sleepTime; //how long you want the arduino to sleep


//Inclure la librairie de pilotage du capteur DHT11
    #include <dht11.h> 
    dht11 DHT;        //Instancier un capteur de type dht11
    #define DHT11PIN 2  //Branché sur pin2 digital
//***********************************************
  
    
    #include <SPI.h> //Bibliothèque gérant les connexions SPI
    
    //Bibliothèques gérant les nRF24L01+
    #include <Mirf.h>
    #include <nRF24L01.h>
    #include <MirfHardwareSpiDriver.h>
//***********************************************
    //La dernière fois que l'on a envoyé des données via le nRF (en ms)
    long lastSend = 0;
     
    //Le delai entre chaque envois (en ms)
    int sendDelay = 5*1000;//Ici 5sec
    
    //L'identifiant de chaque sonde. Cette identifiant doit être propre à une sonde.
    int probeId = 0;
     
     
    // on declare le capteur sol
    int PinAnalogiqueHumidite=0;       //Broche Analogique de mesure d'humidité A0
    int PinNumeriqueHumidite=6;        //Broche Numérique mesure de l'humidité
    int hsol;  //Humidite su sol, mesure analogique
    int secheresse;  //0 ou 1 si seuil atteint
    
    //**************************
    
   // on declare le capteur lumière sur A1
   const int sensorLightPin = A1;
   int sensorLightValue = 0;
   int lightValue = 0;
     
     
   
   // on setup  
   
   void setup() {
        Serial.begin(9600); //on ouvre un port pour tout le monde
         sleepTime = 20000; //set sleep time in ms, max sleep time is 49.7 days
        
        
       
        
         //On inialise MIRF pour pouvoir gérer nos nRFs
        Mirf.spi = &MirfHardwareSpi;
        Mirf.init();
        Mirf.setRADDR((byte *)"prob1");//Le nom du capteur de la sonde
        Mirf.payload = 12;//La longueur des paquets qui transiteront
        Mirf.config();
        Mirf.setTADDR((byte*)"serv0");//Le nom du serveur à qui on transmet nos données
 
        Serial.println( "nRF24L01+ initialise!" );
        
        //********************
        
        pinMode(PinAnalogiqueHumidite, INPUT);       //pin A0 en entrée analogique
        pinMode(PinNumeriqueHumidite, INPUT);  //pin 6 en entrée numérique
    }  
   
   
    void loop() { //boucle principale
    
    //Si on a atteint le délai entre deux envois de données
  if(lastSend+sendDelay <= millis())
  {
    Serial.println("Sending...");
     
    //Si on est en train d'envoyer, on attend que ce soit fini
    while(Mirf.isSending()){
    }
     // on lit les données du capteur lumiere et on stock dans lightValue
     lightValue = analogRead(sensorLightPin);
     
     hsol = analogRead(PinAnalogiqueHumidite); // Lit la tension analogique du capteur sol
        secheresse = digitalRead(PinNumeriqueHumidite);
 
    //On actualise les valeurs du DHT11
    DHT.read(DHT11PIN);  

    //On crée le paquet d'une longueur de 12 octets
    byte packet[6];
     
    //L'identifiant du capteur
    packet[0] = probeId;
     
    //La température
    packet[1] = DHT.temperature;
     
    //L'humidité
    packet[2] = DHT.humidity;
    
    //Le sol
    packet[3] = (hsol/4);
    
    //la lumiere
    packet[4] = lightValue;
    
    // la secherresse
    packet[5] = secheresse;
     
    //On envoit le paquet
    Mirf.send(packet);
     
    //On affiche les données du paquet pour le debug
    Serial.print("Temp:");
    Serial.println(packet[1]);
    Serial.print("Humi:");
    Serial.println(packet[2]);
    Serial.print("hsol:");
    Serial.println(packet[3]);
    Serial.print((float)hsol);
    Serial.print("lumiere:");
    Serial.println(packet[4]);
    Serial.print("secheresse:");
    Serial.println(packet[5]);
    
     
    //On actualise la "date" du dernier envoi de données
    lastSend = millis();
  }
  delay(2000);
    sleep.pwrDownMode(); //set sleep mode
  sleep.sleepDelay(sleepTime); //sleep for: sleepTime
}

Ensuite le serveur arduino :

//***********************************************************************************************************/
// Programme du Serveur BambooProbe Humidité du sol, humidité de l'air, température de l'air et Luminosité
// 
// Code inspiré de http://geeklaboratories.com/408-comment-monitorer-le-climat-de-son-domicile-avec-arduino
// 
// Shield Ethernet, nRF24L01+, led Temoin d'alerte secheresse
//
// David M - plantesvertes.net
//***********************************************************************************************************/

//La bibliothèque gérant les connexions SPI
#include <SPI.h>
 
//La bibliothèque gérant les nrf24L01+
#include <Mirf.h>
#include <nRF24L01.h>
#include <MirfHardwareSpiDriver.h>
 
//La bibliothèque gérant le serveur sur Ethernet
#include <Ethernet.h>
 
//L'adresse MAC du shield Ethernet
byte mac[] = { ici votre adresse mac du shield ethernet };
 
//L'objet contenant le serveur écoutant sur le port 80
EthernetServer server(80);
 
//L'adresse FIXE sur laquelle le serveur écoute
IPAddress ip(ici l ip du shield ethernet);
 
//Les dernières valeurs des capteurs
int lastTemp = 0;
int lastHumi = 0;
int lastSol = 0;
int lastSolGood = 0;
int lastLight = 0;
int lastSecheresse = 0;
int Secheresse =0;
int PinLed=6;    //LED témoin de seuil de  sécheresse
 
//Les valeurs des capteurs ont-elles changé depuis le dernier envoi de données via Ethernet ?
boolean valuesHaveChanged = false;
 
void setup()
{ 
  //On initie la connexion Série (via USB)
  Serial.begin(9600);
  Serial.println("Démarrage du capteur.");
 
  /*
   * On initialise le nrf24L01
   */
  Mirf.spi = &MirfHardwareSpi;
  Mirf.init();
  Mirf.setRADDR((byte *)"serv0");//Le nom du serveur dans le réseau d'émetteurs-recepteurs.
  Mirf.payload = 12;//La longueur d'un paquet exprimée en octets
  Mirf.config();
 
  Serial.println( "nRF24L01+ initialise!" );
   
  //On démarre le serveur en lui fournissant une adresse MAC et une IP
  Ethernet.begin(mac, ip);
  server.begin();
   
  //On affiche l'ip du serveur de manière à voir si tout va bien
  Serial.print("Adresse du serveur obtenue sans DHCP: ");
  Serial.println(Ethernet.localIP());
}
 
 
void loop()
{
   
     
  //On récupère une connexion entrante sur le serveur web, si une se présente
  EthernetClient client = server.available();
   
  //Si des données sont disponibles via les ondes (nrf24L01+)
  if(Mirf.dataReady())
  {
    //On crée le tableau qui va contenir les données
    byte datas[6];
     
    //On récupère et place les données dans le tableau
    Mirf.getData(datas);
     
    //On les affiche via le port série pour débugger
    Serial.print("Temp:");
    Serial.println(datas[1]);
    Serial.print("Humi:");
    Serial.println(datas[2]);
    Serial.print("Sol:");
    Serial.println(datas[3]);
    Serial.print("Light:");
    Serial.println(datas[4]);
    Serial.print("Secheresse:");
    Serial.println(datas[5]);
    
    /* Si le serveur detecte un seuil de secheresse a 1 on allume la led d'alerte */ 
      int Secheresse = (datas[5]);
      Serial.print(Secheresse);
    if (Secheresse==1) // si le capteur est au sec (valeur 1 numerique)
        {
            digitalWrite(PinLed, HIGH);   // LED allumée
        }
          else {
        digitalWrite(PinLed, LOW);   // LED off car tout vas bien
           }
    
     
    //On les stocke afin de pouvoir les renvoyer
    lastTemp = datas[1];
    lastHumi = datas[2];
    lastSol = datas[3];
    lastSolGood = lastSol*4;
    lastLight = datas[4];  
    lastSecheresse = datas[5];   
    //On indique au programme que les valeurs ont changés et qu'il y a donc des choses à renvoyer
    valuesHaveChanged = true;
  }
  
  
   
  //Si on recupéré un client sur le serv' web
  if (client)
  {
    Serial.println("Nouveau client");
 
    boolean currentLineIsBlank = true;
     
    //Tant que le client est connecté
    while (client.connected())
    {
      //Tant qu'on a pas fini de lire sa requête
      if (client.available())
      {
        //On lit un octet de la requete du client et on l'affiche sur le port série
        char c = client.read();
        Serial.write(c);
         
        //Si on est face à un saut de ligne et que la ligne actuelle est déjà vide
        if (c == '\n' && currentLineIsBlank)
        {
          //On répond à la requête avec nos données
          client.println("HTTP/1.1 200 OK");//Code 200 = Tout s'est bien déroulé
          client.println("Content-Type: application/xml");//On spécifie le MIME-TYPE des données qu'on envoit (XML)
          client.println("Connection: close"); 
          client.println();
         
          client.println("<?xml version=\"1.0\"?>");//Entête du document XML
           
          //L'element racine du document XML
          client.println("<sensors>");
           
          //On parcours tout nos capteurs
          for (int i = 0; i < 1; i++)
          {
            //On crée un élement correspondant à chaque capteur
            client.print("<sensor name=\"sns");
            client.print(i);//Id du capteur
            client.println("\">");
             
            //On crée un élément enfant contenant les valeurs de température
            client.print("<temperature>");
            //Si les valeurs de capteurs ont changé, on les envoit
            if(valuesHaveChanged)
              client.print(lastTemp);
            //Sinon on renvoit une chaine non-numérique
            else
              client.print("NaN");
            client.println("</temperature>");
             
            //On créé un élément enfant contenant les valeurs d'humidité
            client.print("<humidity>");
            //Si les données ont changé, on les envoit
            if(valuesHaveChanged)
              client.print(lastHumi);
            //Sinon on renvoit une chaine non-numérique
            else
              client.print("NaN");
            client.println("</humidity>");
            
            //******
            
            //On créé un élément enfant contenant les valeurs d'humidité du sol
            client.print("<Sol>");
            //Si les données ont changé, on les envoit
            if(valuesHaveChanged)
              client.print(lastSolGood);
            //Sinon on renvoit une chaine non-numérique
            else
              client.print("NaN");
            client.println("</Sol>");
            
              //On créé un élément enfant contenant les valeurs de lumiere
            client.print("<Light>");
            //Si les données ont changé, on les envoit
            if(valuesHaveChanged)
              client.print(lastLight);
            //Sinon on renvoit une chaine non-numérique
            else
              client.print("NaN");
            client.println("</Light>");
             
            client.println("</sensor>");  
          }
           
          //On ferme l'élement racine
          client.println("</sensors>");
          break;
        }
         
        //Si on saute une ligne
        if (c == '\n')
        {
          //C'est qu'on démarre une nouvelle ligne
          currentLineIsBlank = true;
        }
        else if (c != '\r')
        {
          //On a un caractère sur la ligne courante, elle n'est pas vide
          currentLineIsBlank = false;
        }
      }
    }
    //On laisse au navigateur client le temps de récuperer les données
    delay(1);
     
    //On déconnecte le client
    client.stop();
    Serial.println("client deconnecte");
  }
  

}

On continue avec le code php du cron qui doit etre lancé a intervalle régulier. Chez moi toute les heures.

<meta charset="utf-8">
<table>
    <tr>
        <th>Nom du capteur: </th>
        <th>Température: </th>
        <th>Hygrométrie: </th>
        <th>Hygrométrie sol: </th>
    </tr>
<?php
//On désactive l'affichage des erreurs, car les erreurs PDO renvoit le nom d'utilisateur et le mot de passe
error_reporting(0);
 
//On crée l'objet gérant la base de données
$usr = "ici votre login BDD";
$pass = "et la votre pasword BDD";

$bdd = new PDO('mysql:dbname=ici le nom de la BDD;host=localhost', $usr, $pass);
 
//Le temps du serveur formatté en javascript (nombre de millisecondes depuis le 1er Janvier 1970)
$temps = time()*1000 + 3600*1000;
 
//On récupère le document XML généré par l'Arduino
$doc = simplexml_load_file('http://ici l ip sur serveur arduino:et son port souvent 80');//Doit correspondre à l'adresse de l'Ethernet Shield
 
//On boucle sur tous les éléments du document XML
foreach($doc as $elem)
{
    //On récupére les attributs de l'élement notamment le nom du capteur
    $attributes = $elem->attributes();
    $name = $attributes["name"];
     
    //On récupère les valeurs des capteurs (température/humidité)
    $enfants = $elem->children();
    $temp = $enfants[0];
    $hygro = $enfants[1];
	$hSol = $enfants[2];
     
    //On prépare la requete avec les bons paramètres
    $requete = $bdd->prepare("INSERT INTO graph_tbl(`id`, `nomCapteur`, `temperature`, `humidity`, `sol`, `date`) VALUES (NULL, :nom, :temp, :humi, :lesol, :time);");
     
    //On execute la requête en lui passant les données qui vont bien
    $etat = $requete->execute(array("nom" => $name,
                                    "temp" => $temp,
                                    "humi" => $hygro,
									"lesol" => $hSol,
                                    "time" => $temps));
     
    //Si la requête s'est bien déroulée
    if($etat)
        echo "OK";
    else
        echo "Fail";
     
    //On affiche l'état des capteurs (pour debug)
    echo "<tr><td>".$name."</td><td>".$temp."</td><td>".$hygro."</td><td>".$hSol."</td></tr>";
}
?>
</table>

Et on termine par le code d'affichage :

<?php
//Connexion a la base de données
// Remplacez localhost, highcharts, username, password, par vos informations de connexion.
$hostname = "localhost";
$database = "ici le nom de la BDD";
$username = "ici le login bdd";
$password = "ici le pasword BDD";


$Conn = mysql_pconnect($hostname, $username, $password);  
?>
<html>
<head>
<title>Falaf.net - Highstock Exemple 2</title>
<!-- Chargement des librairies: Jquery & highcharts -->
 <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script>
<script type="text/javascript" src="js/highstock.js" ></script>
<script type="text/javascript" src="js/themes/gray.js" ></script>
<script type="text/javascript" src="js/modules/exporting.js" ></script>
<!-- Chargement des traductions -->
<script type="text/javascript" src="js/options.js"></script>
<!-- Chargement des variables, et paramètres de Highcharts -->
    <script type="text/javascript">
$(function() {
        // Ici commence le code pour le premier graphique
// Ce graphique à pour nom: container_chart_un
        $('#container_chart_un').highcharts('StockChart', {
 
            rangeSelector : {
            buttons: [
                                {type: 'day',count: 1,text: '1j'},
                                {type: 'day',count: 3,text: '3j'},
                                {type: 'day',count: 7,text: '7j'},
                                {type: 'month',count: 1,text: '1m'},
                                {type: 'year',count: 1,text: '1a'},
                                {type: 'all',text: 'Tout'}],
                selected : 5
            },
            legend:
            {
                verticalAlign: 'top',
                floating : false,
                y: 25,
                enabled: true
            },
            yAxis: {
                title: {
                    text: 'temperature (°)'
                }
            },
            tooltip: {
                shared: true,
                //Ajout d'une unité de mesure lors du survole d'un point du graphique
                valueSuffix: ' °'
            },    
            title : {
                text : 'Temperature'
            },
 
series: [
<?php
mysql_select_db($database, $Conn);
 
// Dans la ligne ci-dessous, modifiez sonde_1, par le nom de votre première sonde
 
$query_info = "SELECT ftimestamp, temperature FROM `graph_tbl` WHERE  `nomCapteur` LIKE  'sns0' ORDER BY ftimestamp ASC";
$info = mysql_query($query_info, $Conn);
$row_info = mysql_fetch_assoc($info);
$totalRows_info = mysql_num_rows($info);
?>
{
 
// Dans la ligne ci-dessous, modifiez name, par le nom de votre courbe. (Exemple: Température, pression, etc.)
                name: 'Température',
                data: [<?php do { ?>
[Date.UTC(<?php echo date("Y", strtotime("".$row_info['ftimestamp'])).", ".(date("m", strtotime("".$row_info['ftimestamp'])) - 1).", ".date("d, H, i", strtotime("".$row_info['ftimestamp'])); ?>), <?php echo $row_info['temperature']; ?>],
<?php } while ($row_info = mysql_fetch_assoc($info)); ?>],
            },
            ]
        });
//Ici se termine le code pour le premier graphique
 
// Ici commence le code pour le second graphique
// Ce second graphique à pour nom: container_chart_deux
        $('#container_chart_deux').highcharts('StockChart', {
 
            rangeSelector : {
            buttons: [
                                {type: 'day',count: 1,text: '1j'},
                                {type: 'day',count: 3,text: '3j'},
                                {type: 'day',count: 7,text: '7j'},
                                {type: 'month',count: 1,text: '1m'},
                                {type: 'year',count: 1,text: '1a'},
                                {type: 'all',text: 'Tout'}],
                selected : 5
            },
            legend:
            {
                verticalAlign: 'top',
                floating : false,
                y: 25,
                enabled: true
            },
            yAxis: {
                title: {
                    text: 'humidité (%)'
                }
            },
            tooltip: {
                shared: true,
                //Ajout d'une unité de mesure lors du survole d'un point du graphique
                valueSuffix: ' %'
            },    
            title : {
                text : 'humiditée air'
            },
 
series: [
<?php
mysql_select_db($database, $Conn);
 
// Dans la ligne ci-dessous, modifiez sonde_2, par le nom de votre deuxième sonde
 
$query_info = "SELECT ftimestamp, humidity FROM `graph_tbl` WHERE  `nomCapteur` LIKE  'sns0' ORDER BY ftimestamp ASC";
$info = mysql_query($query_info, $Conn);
$row_info = mysql_fetch_assoc($info);
$totalRows_info = mysql_num_rows($info);
?>
{
 
// Dans la ligne ci-dessous, modifiez name, par le nom de votre courbe. (Exemple: Température, pression, etc.)
                name: 'Humidité Air',
                data: [<?php do { ?>
[Date.UTC(<?php echo date("Y", strtotime("".$row_info['ftimestamp'])).", ".(date("m", strtotime("".$row_info['ftimestamp'])) - 1).", ".date("d, H, i", strtotime("".$row_info['ftimestamp'])); ?>), <?php echo $row_info['humidity']; ?>],
<?php } while ($row_info = mysql_fetch_assoc($info)); ?>],
            },]
        });
//Ici se termine le code pour le second graphique


 
//Ajoutez ici le code pour les nouveaux graphiques
// Ici commence le code pour le second graphique
// Ce second graphique à pour nom: container_chart_trois
        $('#container_chart_trois').highcharts('StockChart', {
 
            rangeSelector : {
            buttons: [
                                {type: 'day',count: 1,text: '1j'},
                                {type: 'day',count: 3,text: '3j'},
                                {type: 'day',count: 7,text: '7j'},
                                {type: 'month',count: 1,text: '1m'},
                                {type: 'year',count: 1,text: '1a'},
                                {type: 'all',text: 'Tout'}],
                selected : 5
            },
            legend:
            {
                verticalAlign: 'top',
                floating : false,
                y: 25,
                enabled: true
            },
            yAxis: {
                title: {
                    text: 'sol '
                }
            },
            tooltip: {
                shared: true,
                //Ajout d'une unité de mesure lors du survole d'un point du graphique
                valueSuffix: ' /1024'
            },    
            title : {
                text : 'humiditée du sol'
            },
 
series: [
<?php
mysql_select_db($database, $Conn);
 
// Dans la ligne ci-dessous, modifiez sonde_2, par le nom de votre deuxième sonde
 
$query_info = "SELECT ftimestamp, sol FROM `graph_tbl` WHERE  `nomCapteur` LIKE  'sns0' ORDER BY ftimestamp ASC";
$info = mysql_query($query_info, $Conn);
$row_info = mysql_fetch_assoc($info);
$totalRows_info = mysql_num_rows($info);
?>
{
 
// Dans la ligne ci-dessous, modifiez name, par le nom de votre courbe. (Exemple: Température, pression, etc.)
                name: 'Humidité du sol',
                data: [<?php do { ?>
[Date.UTC(<?php echo date("Y", strtotime("".$row_info['ftimestamp'])).", ".(date("m", strtotime("".$row_info['ftimestamp'])) - 1).", ".date("d, H, i", strtotime("".$row_info['ftimestamp'])); ?>), <?php echo $row_info['sol']; ?>],
<?php } while ($row_info = mysql_fetch_assoc($info)); ?>],
            },]
        });
//Ici se termine le code pour le second graphique
 
// Fin du code pour Highstock
});
 
        </script>
</head>
 
<body style="background:#000;">
    <p></p>
    <p>
<!-- Affichage des graphiques -->
    <div id="container_chart_un" class="Tableau"></div>
    <div id="container_chart_deux" class="Tableau"></div>
	<div id="container_chart_trois" class="Tableau"></div></p>
<div align="center">
    <p><a href="http://www.falaf.net">© Falaf.net</a></p>
    </div>
	
	<style>
	
		body {background:#000;}
		.Tableau
		{width:49%; height:400px; display:inline-block; margin-bottom:2% 
		}
	</style>
</body>
</html>

Ce qui donne au final :

Bon donc tout marche plutot bien... mais il y un mais !!

Gros gros probleme d'alimentation sur la partie capteur.
Pour le moment j'utilise un uno pour le proto (ensuite je passe sur mini pro) et j'alimente avec un pile 9V.
J'ai fait un test avec un envoi de donnée toute les 5 secondes pour voir la décharge de la pile... en 4 h c'etait terminé !!
Bon bien sur au final le delais sera plus long (45mn a priori).

En fait le plus gros probleme, je pense, est la sonde d'humidité du sol qui est en 5V et qui a une led allumé en permanence.
Du coups j'ai ajouté une librairy sleep mais je ne suis pas certain que cela marche vraiment... la led reste allumé deja, et qund je test je vois toujours 5v sur ma breadboad...

Il y a toujours la solus d'un lipo mais ce n'est pas vraiment economique.

peut etre voyez vous une solus ??

Merci d'avance.

pixelgarden:
...
En fait le plus gros probleme, je pense, est la sonde d'humidité du sol qui est en 5V et qui a une led allumé en permanence.
Du coups j'ai ajouté une librairy sleep mais je ne suis pas certain que cela marche vraiment... la led reste allumé deja, et qund je test je vois toujours 5v sur ma breadboad...

Il y a toujours la solus d'un lipo mais ce n'est pas vraiment economique.

peut etre voyez vous une solus ??

Merci d'avance.

bonjour
ref de ta sonde ?
une peut etre solution , l'alimenter juste "un peu avant" la mesure et couper ensuite
un petit BS170 doit surement faire l'affaire