Télégestion et automatisation d'un aquarium

Bonjour ; bonsoir
Dans un premier temps , j'ai crée un topic très confus dans la mauvaise catégorie. Donc pour corriger toutes mes erreurs et faire un topic plus propre et avec plus de sens je crée ce topic.

Tout dabors notre projet (4 personnes) :

Le premier s'informe du niveau de pH de l'eau et installe une caméra !

Le second s'informe de la température et place une résistance chauffante qui doit être gérer par moi !

Le troisième doit placer une lampe qui doit aussi être gérer par moi On / off

Ma partie consiste : grâce a une carte Arduino ethernet de gérer à distance La résistance chauffante et la lumière tout en affichant le ph la température actuel et le flux ip de la camera !

Mon problème est de pouvoir prendre les information de l'url reçu donc soit le "n" ou le "f" pour allumer ou éteindre la lampe et la valeur de la température (ex: TEMP=26 ) de prendre le 26 et de pouvoir le modifier pour gérer à distance la résistance

// Ces deux bibliothèques sont indispensables pour le shield
#include <SPI.h>
#include <Ethernet.h>

// L'adresse MAC du shield
byte mac[] = { 0x90, 0xA2, 0xDA, 0x0D, 0x75, 0x1E };
// Initialise notre serveur sur le port 80
EthernetServer serveur(80);

#define REQ_BUF_SZ 40
char HTTP_req[REQ_BUF_SZ] = {0}; // buffered HTTP request stored as null terminated string
String toto = "";
char req_index = 0; // index into HTTP_req buffer

void setup() {
// On démarre la voie série pour déboguer
Serial.begin(9600);
char erreur = 0;
// On démarre le shield Ethernet SANS adresse ip (donc donnée via DHCP)
erreur = Ethernet.begin(mac);

if (erreur == 0) Serial.println("DHCP non joignable...");
else Serial.println(Ethernet.localIP());

Serial.println("Init...");
// Donne une seconde au shield pour s'initialiser
delay(100);
// On lance le serveur
serveur.begin();
Serial.println("Pret !");
}

void loop() {
// Regarde si un client est connecté et attend une réponse
EthernetClient client = serveur.available();

if (client) { // got client?
boolean currentLineIsBlank = true;
while (client.connected()) {
if (client.available()) { // client data available to read
char c = client.read();// read 1 byte (character) from client
if (req_index < (REQ_BUF_SZ - 1)) {
HTTP_req[req_index] = c; // save HTTP request character
char toto = HTTP_req;
req_index++;
}

// print HTTP request character to serial monitor
//Serial.print(c);

// dernière ligne vide et se termine par \n
if (c == '\n' && currentLineIsBlank) {

// analyse traitement de la requête
if (toto.substring(14) == "f") {
Serial.println(HTTP_req[14]);
// lumiere = 1
}
// else {lumiere = 0 }
Serial.print(toto.indexOf("lumiere"));
Serial.println();

if (toto.substring(21, 22) == "25") {
// if (HTTP_req[21] >= '1' && HTTP_req[21] < '3' ) {
Serial.print(HTTP_req[21]);
Serial.println(HTTP_req[22]);
}

//}

// reset buffer index and all buffer elements to 0
req_index = 0;
StrClear(HTTP_req, REQ_BUF_SZ);
toto = "";
break;
}

// every line of text received from the client ends with \r\n
if (c == '\n') {
// last character on line of received text
// starting new line with next character read
currentLineIsBlank = true;
}
else if (c != '\r') {
// a text character was received from client
currentLineIsBlank = false;
}
} // end if (client.available())
} // end while (client.connected())
delay(1); // give the web browser time to receive the data
client.stop(); // close the connection
} // end if (client)
}

// vide une chaine
void StrClear(char *str, char length) {
for (int i = 0; i < length; i++) {
str = 0;

  • }*
    }
    // cherche si une chaine eszt contenu dans une autre
    // returns true si c'est la cas et false sinon
    boolean StrContains(char *str, char *sfind) {
  • char found = 0;*
  • char index = 0;*
  • char len;*
  • len = strlen(str);*
  • if (strlen(sfind) > len) {*
  • return 0;*
  • }*
  • while (index < len) {*
  • if (str[index] == sfind[found]) {*
  • found++;*
  • if (strlen(sfind) == found) {*
  • return true;*
  • }*
  • }*
  • else {*
  • found = false;*
  • }*
  • index++;*
  • }*
  • return false;*
    }

Bonjour,
Il faut mettre ton code entre balises cela sera plus lisible voir ici

Nouuxs:
Bonjour ; bonsoir
Dans un premier temps , j'ai crée un topic très confus dans la mauvaise catégorie. Donc pour corriger toutes mes erreurs et faire un topic plus propre et avec plus de sens je crée ce topic.

Tout dabors notre projet (4 personnes) :

Le premier s'informe du niveau de pH de l'eau et installe une caméra !

Le second s'informe de la température et place une résistance chauffante qui doit être gérer par moi !

Le troisième doit placer une lampe qui doit aussi être gérer par moi On / off

Ma partie consiste : grâce a une carte Arduino ethernet de gérer à distance La résistance chauffante et la lumière tout en affichant le ph la température actuel et le flux ip de la camera !

Mon problème est de pouvoir prendre les information de l'url reçu donc soit le "n" ou le "f" pour allumer ou éteindre la lampe et la valeur de la température (ex: TEMP=26 ) de prendre le 26 et de pouvoir le modifier pour gérer à distance la résistance

// Ces deux bibliothèques sont indispensables pour le shield

#include <SPI.h>
#include <Ethernet.h>

// L'adresse MAC du shield
byte mac[] = { 0x90, 0xA2, 0xDA, 0x0D, 0x75, 0x1E };
// Initialise notre serveur sur le port 80
EthernetServer serveur(80);

#define REQ_BUF_SZ  40
char HTTP_req[REQ_BUF_SZ] = {0}; // buffered HTTP request stored as null terminated string
String toto = "";
char req_index = 0;              // index into HTTP_req buffer

void setup() {
// On démarre la voie série pour déboguer
Serial.begin(9600);
char erreur = 0;
// On démarre le shield Ethernet SANS adresse ip (donc donnée via DHCP)
erreur = Ethernet.begin(mac);

if (erreur == 0) Serial.println("DHCP non joignable...");
else Serial.println(Ethernet.localIP());

Serial.println("Init...");
// Donne une seconde au shield pour s'initialiser
delay(100);
// On lance le serveur
serveur.begin();
Serial.println("Pret !");
}

void loop() {
// Regarde si un client est connecté et attend une réponse
EthernetClient client = serveur.available();

if (client) {  // got client?
  boolean currentLineIsBlank = true;
  while (client.connected()) {
    if (client.available()) {  // client data available to read
      char c = client.read();// read 1 byte (character) from client
      if (req_index < (REQ_BUF_SZ - 1)) {
        HTTP_req[req_index] = c;          // save HTTP request character
        char toto = HTTP_req;
        req_index++;
      }

// print HTTP request character to serial monitor
      //Serial.print(c);

// dernière ligne vide et se termine par \n
      if (c == '\n' && currentLineIsBlank) {

// analyse traitement de la requête
        if (toto.substring(14) == "f") {
          Serial.println(HTTP_req[14]);
          // lumiere = 1
        }
        // else {lumiere = 0 }
        Serial.print(toto.indexOf("lumiere"));
        Serial.println();

if (toto.substring(21, 22) == "25") {
          // if (HTTP_req[21] >= '1' && HTTP_req[21] < '3' ) {
          Serial.print(HTTP_req[21]);
          Serial.println(HTTP_req[22]);
        }

//}

// reset buffer index and all buffer elements to 0
        req_index = 0;
        StrClear(HTTP_req, REQ_BUF_SZ);
        toto = "";
        break;
      }

// every line of text received from the client ends with \r\n
      if (c == '\n') {
        // last character on line of received text
        // starting new line with next character read
        currentLineIsBlank = true;
      }
      else if (c != '\r') {
        // a text character was received from client
        currentLineIsBlank = false;
      }
    } // end if (client.available())
  } // end while (client.connected())
  delay(1);      // give the web browser time to receive the data
  client.stop(); // close the connection
} // end if (client)
}

// vide une chaine
void StrClear(char *str, char length) {
for (int i = 0; i < length; i++) {
  str[i] = 0;
}
}

// cherche si une chaine eszt contenu dans une autre
// returns true si c'est la cas et false sinon
boolean StrContains(char *str, char *sfind) {
char found = 0;
char index = 0;
char len;

len = strlen(str);

if (strlen(sfind) > len) {
  return 0;
}
while (index < len) {
  if (str[index] == sfind[found]) {
    found++;
    if (strlen(sfind) == found) {
      return true;
    }
  }
  else {
    found = false;
  }
  index++;
}

return false;
}

[/quote]