Controle de relais avec requete HTTP avec un arduino YUN

Bonjour à tous,

Je voudrais domotiser l’ouverture de mon portail à l’aide de commande HTTP envoyé par ma box domotique Jeedom, pour cette partie pas de soucis avec le plugin script pour ce qui connaissent.

Mon problème se situe au niveau de mon arduino YUN. Donc j’ai bien connecté celui ci à mon réseau domestique et il reçoit bien les requêtes HTTP que je lui envoi.

Je voudrais commander 2 relais différent pour pouvoir ouvrir mon portail partiellement (1porte) ou totalement (les 2portes). Pour ce faire j’ai créer 2 requêtes http différente qui sont:

ouverture partielle => http://IPduYUN/arduino/partielle
ouverture totale => http://IPduYUN/arduino/totale

Dans mon code je viens lire ma requête et récupère la chaine après le ‘/’ donc j’ai bien une variable qui vaut soit “partielle” ou “totale”. Je me sers ensuite d’un IF variable == “partielle” alors j’active un relais ou si variable == “totale” j’active l’autre relais.

J’en arrive enfin à mon problème, peut importe la requête que j’envoie (partielle ou totale) les 2 cas possible sont exécuté… je ne comprend pas… pourtant ma variable et bien égale à soit “partielle” ou “totale” mais jamais les 2…

J’ai du mal construire mon IF

voici mon code, je rappel que je suis débutant en programmation donc il doit y avoir pas mal de boulette:

#include <Bridge.h>
#include <YunServer.h>
#include <YunClient.h>

// Démarre une instance de YunServer, qui réceptionnera
// toutes les requêtes transférées par le serveur web côté Linux
YunServer server;

const int Relais1 = 12;
const int Relais2 = 8;

void setup() {
// Démarre une instance du Bridge
Bridge.begin();

// Lance l’écoute du YunServer sur le réseau
server.listenOnLocalhost();
server.begin();
pinMode(Relais1, OUTPUT);
pinMode(Relais2, OUTPUT);

digitalWrite(Relais1, HIGH);
digitalWrite(Relais2, HIGH);

}

void loop() {
// Réceptionne les éventuels clients
YunClient client = server.accept();

// Un client s’est-il connecté ?
if (client)
{
String command = client.readStringUntil(’/’);
client.print(command); // renvoi la valeur de command pour voir

if (command == ‘partielle’)
{
digitalWrite(Relais1, LOW);
delay(500);
digitalWrite(Relais1, HIGH);

// Écriture de la réponse vers le navigateur
client.print(“1 porte ouverte”);

}

if (command == ‘totale’)
{
digitalWrite(Relais2, LOW);
delay(500);
digitalWrite(Relais2, HIGH);

// Écriture de la réponse vers le navigateur
client.print(“2 portes ouverte”);

}
else {
client.print(“commande invalide”);

}
}

// On ferme la connexion et libère les ressources
client.stop();

delay(5000); // Pause de 50ms, puis retour au début.
}

Si quelqu’un peut me dire ce qui ne va pas…

MERCI d’avance à tous :wink:

Je viens de me rendre compte que je peut mettre n'importe quoi apres le '/' (toto par exemple) et il fait quand même les 2 actions...

Il y a bien quelque chose que j'ai mal compris dans tout ce que j'ai pu regardé sur le sujet mais je ne vois pas quoi....

J’ai fini par résoudre mon problème en reprenant calmement les chose. Je partage mon code si ça peu servir à d’autre.

#include <Bridge.h>
#include <YunServer.h>
#include <YunClient.h>

YunServer server;

const int Relais1 = 12;
const int Relais2 = 8;

void setup() {

Bridge.begin();

server.listenOnLocalhost();
server.begin();
pinMode(Relais1, OUTPUT);
pinMode(Relais2, OUTPUT);

digitalWrite(Relais1, HIGH);
digitalWrite(Relais2, HIGH);
}

void loop() {

YunClient client = server.accept();

if (client) {
process(client);
client.stop();
}

delay(50);
}

void process(YunClient client){
String command = client.readStringUntil(’\r’);

client.print(command);

if (command == “partielle”){
partielleCommand(client);
return;
}

if (command == “totale”) {
totaleCommand(client);
return;
}
}

void partielleCommand(YunClient client){
digitalWrite(Relais1, LOW);
delay(500);
digitalWrite(Relais1, HIGH);

// Écriture de la réponse vers le navigateur
client.print(“1 porte ouverte”);
delay(1000);
}

void totaleCommand(YunClient client){
digitalWrite(Relais2, LOW);
delay(500);
digitalWrite(Relais2, HIGH);

// Écriture de la réponse vers le navigateur
client.print(“2 portes ouverte”);
delay(1000);
}

Voila a+