probleme de programmation rfid et ethernet.creer un switch 0/1

Bonjour, je viens de m'inscrire sur votre forum, donc svp soyez indulgent si je loupe quelques truc (bon emplassement de mon topic...questions à cote de la plaque etc...). bien..je suis un bricolo du dimanche et je suis capable de faire de la cuisine avec des bouts de code, mais des qu'il s'agit de faire des modif pour que mon arduino fasse precisement ce que je veux ...bin la c'est la cata. je bosse sur le declenchement de scenarii sur ma veralite(box domotique vers laquelle j'envoi des requetes "get")à partir d'un arduino uno equipé d'un shield ethernet et d'un lecteur de badge rfid mc522.Le principe: je rentre à la maison, je badge et la maison passe en mode "presence" (lumieres allumées chauffage en mode confort, tv allumée) je sors de la maison je badge et la maison passe en mode "absent" (lumieres eteintes etc..). Ce qui marche: la communication ethernet entre mon arduino et ma vera (envoi de requetes sans souci) la lecture du badge rfid ok. Ce qui ne va pas: comment faire que quand je badge un fois je passe en present et quand je rebadge je passe en mode absent...actuellement je badge, ca passe en present et quand je rebadge ...bin je suis toujours en mode present, je ne bascule pas en mode absent...pas sur que cela soit super clair... Ps:j'ai cherché du coté des condition if/then mais encore une fois je comprends un peu le C mais je ne peux pas l'ecrire, j'ai des fautes de syntaxe partout et mes soft ne se compilent jamais...

mon code (qui est un vrai depotoire) avec lequel je fournis l’aspirine:

//Librairie
#include <SPI.h>
#include <Ethernet.h>
#include <MFRC522.h>
//DEFINITION DES VARIABLES
// Adresse MAC de la carte Ethernet
// L'adresse MAC de la carte Ethernet est situé sur un stickers sur le Shield à changer!

byte mac[] = {0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA };
// srting de la réponse de la VERA
String readString = String(30);
// futur message SMS
String messageString = String(30);
// adresse IP de la VERA à rentrer
IPAddress vera(192,168,1,16);
//Initialise l'etablissement du serveur sur le port 80 pour recevoir des requete HTTP
EthernetServer server(80);
// Initialise le client Ethernet (librairie) avec l'adresse IP serveur VERA,  port 3480 pour la VERA
EthernetClient clientVera;
#define SS_PIN 6
#define RST_PIN 7
// Definicoes pino modulo RC522
MFRC522 mfrc522(SS_PIN, RST_PIN); 
//INITIALISATION

int i;
int etat=0;
int bouton;
void setup() {
// Ouvre la connexion série pour la console
 Serial.begin(9600);
  while (!Serial) {
   ; 
 }
 // Debut de la connexion Ethernet
 if (Ethernet.begin(mac) == 0) {
   Serial.println("Impossible de configurer Ethernet avec DHCP");
   //Si problème on s'arrete
   for(;;)
     ;
 }
 // On attends 1 seconde pour que le shield Ethernet s'inisialise
 delay(1000);
 Serial.println("Connexion reseau etablie.");
  // Inicia MFRC522
 mfrc522.PCD_Init(); 
 // Mensagens iniciais no serial monitor
 Serial.println("Approcher la carte du lecteur...");
 Serial.println();
}

//PROGRAMME PRINCIPAL
void loop()
{
 // Aguarda a aproximacao do cartao
 if ( ! mfrc522.PICC_IsNewCardPresent()) 
 {
   return;
 }
 // Seleciona um dos cartoes
 if ( ! mfrc522.PICC_ReadCardSerial()) 
 {
   return;
 }
 // Mostra UID na serial
 Serial.print("UID da tag :");
 String conteudo= "";
 byte letra;
 for (byte i = 0; i < mfrc522.uid.size; i++) 
 {
    Serial.print(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " ");
    Serial.print(mfrc522.uid.uidByte[i], HEX);
    conteudo.concat(String(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " "));
    conteudo.concat(String(mfrc522.uid.uidByte[i], HEX));
 }
 Serial.println();
 Serial.print("no de serie : ");
 conteudo.toUpperCase();
 
 // Test de la carte 1
 if (conteudo.substring(1) == "7B 63 31 00") {
   Serial.println("Carte administrateur bonjour Jisse et Elodie");
   Serial.println();
   envoiRequeteVeraOn();
   delay(100);
 
 // On cree la connexion serveur pour le client web faisant la requete HTTP
 EthernetClient client = server.available();
 if (client) {
   while (client.connected()) {
     if (client.available()) {
       //On lit la requete caractere par caractere
       char c = client.read();
       //On met la réponse dans une chaine de caractère de longueur maxi 50
         if (readString.length() < 30) {
           //store characters to string
           readString+=c;
         }
         
       
             
           //Si on veut envoyer message jisse et donc envoyer une requete vers la VERA (pour les tests) SIMULE LA RECEPTION D'UN ORDRE SMS 
           else if(readString.indexOf("messagejisse=on") >=0) {
               //on renvoi une reponse sur le navigateur
               client.println("HTTP/1.1 200 OK");
               client.println("Content-Type: text/html");
               client.println();
               client.println("<font color='red'><h1>Message jisse envoyé</font></h1>");
               readString="";
               messageString = "";
               //on arrete le client
               client.stop();
               //on lance la fonction d'envoi de requete HTTP vers la VERA pour allumer la lumiere du bureau
               envoiRequeteVeraOn();
            }
          //Si on veut envoyer message elodie et donc envoyer une requete vers la VERA (pour les tests) SIMULE LA RECEPTION D'UN ORDRE SMS
          else if(readString.indexOf("messagejisse=off") >=0){
              //on renvoi une reponse sur le navigateur
               client.println("HTTP/1.1 200 OK");
               client.println("Content-Type: text/html");
               client.println();
               client.println("<font color='red'><h1>Lumiere bureau eteinte</font></h1>");
               readString="";
               messageString = "";
               //on arrete le client
               client.stop();
               //on lance la fonction d'envoi de requete HTTP vers la VERA pour etiendre la lumiere du bureau
               envoiRequeteVeraOff();
            }  
       }
     }
   }
 }
}

// Fonction d'envoi de requete HTTP vers la VERA pour message jisse
void envoiRequeteVeraOn()
{
 //on etablie la connexion avec la VERA
 if (clientVera.connect(vera, 3480)) {
   Serial.println("");
   Serial.println("Connecte a la Vera et envoi requete");
   // Requete HTTP avec methode GET et placement des parametres pour la VERA changez le device!
    clientVera.println("GET /data_request?id=lu_action&output_format=xml&DeviceNum=44&serviceId=urn:upnp-org:serviceId:SwitchPower1&action=SetTarget&newTargetValue=1 HTTP/1.0");
   clientVera.println();
 }
 else {
   //s'il n'y a pas de connexion
   Serial.println("Erreur de connexion");
 }
//on stop la connexion avec la VERA
clientVera.stop();
Serial.println("Requete envoyee");
}

// Fonction d'envoi de requete HTTP vers la VERA pour message elodie
void envoiRequeteVeraOff()
{
 //on etablie la connexion avec la VERA
 if (clientVera.connect(vera, 3480)) {
   Serial.println("");
   Serial.println("Connecte a la Vera et envoi requete");
   // Requete HTTP avec methode GET et placement des parametres pour la VERA changez le device!
   clientVera.println("GET /data_request?id=lu_action&output_format=xml&DeviceNum=45&serviceId=urn:upnp-org:serviceId:SwitchPower1&action=SetTarget&newTargetValue=1 HTTP/1.0");
   clientVera.println();
 }
 else {
   //s'il n'y a pas de connexion
   Serial.println("Erreur de connexion");
 }
//on stop la connexion avec la VERA
clientVera.stop();
Serial.println("Requete envoyee");

}

Bonjour, Tu n'est pas dans la bonne section, demande à un modérateur de modifier ton poste. Code entre balise s'il te plait.

Sinon, il faut stoker l'état dans une variable et inverser l'état quand tu rebadge.

bonjour, merci de ta réponse, d’où mon essai de code int etat=0; int bouton; je n'ai pas compris "code entre balises" , je contact un moderateur et je tente d'envoyé ma demande dans la bonne section.Merci d'avoir repondu...au plaisir.

|500x248