Gladys vers Arduino->relais

Bonjour,
Je voulais savoir si quelqu’un s’avait comment contrôler des relais brancher à l’arduino grâce à Gladys. L’arduino est donc en USB . Pour info : j’aimerais brancher deux lampe grâce à des relais qui s’allumeront grâce au détecteur de présence 433mhz.
Merci d’avance !

Salut @Error !

Il existe un tuto (ici) très bien qui explique comment faire communiquer Gladys et un Arduino branché dessus. A toi d’adapter le code de ton Arduino pour le faire interagir avec ton relais en fonctionne de la commande reçu !

Pense à faire une recherche sur le forum quand tu as un soucis, beaucoup de sujets ont déjà été traités et ça évite les doublon :slight_smile:

Salut @Error,
Pourquoi ne pas brancher tes lampes sur des prises en 433MHz et Gladys qui fait passerelle ?

Je fais ça chez moi, dès que Gladys détecte ma présence (bluetooth), le soir, elle allume la lumière (prise 433MHz).
Idem pour les ampoules Wifi qui s’allume quand je presse un bouton de la télécommande 433MHz.

1 Like

merci beaucoup mais j’ai une question : lorsque j’appuie sur Temp le relais s’allume et s’éteind après. Il n’a pas de On/off . Lorsque j’appui sur ON ca s’allumet s’éteind et ensuite lorsque j’appuie sur off ca fait de même !
Capture

#include <ArduinoJson.h>

struct actionneurData {
  int id;
  int valeur;
};

actionneurData cde;

void setup() {
  Serial.begin(9600);
  pinMode(13, OUTPUT);
}

void loop() {
}

void serialEvent() {
  if (deserialize(cde)) {
    String tmpCde = "";
    tmpCde = "{\"deviceType\":\"";
    tmpCde += cde.id;
    tmpCde += "\",\"value\":\"";
    tmpCde += cde.valeur;
    tmpCde += "\"}";
    Serial.println(tmpCde);
  }
}

bool deserialize(actionneurData &data) {
  StaticJsonBuffer<55> jsonBuffer;
  JsonObject& root = jsonBuffer.parseObject(Serial);
  if (root == JsonObject::invalid()) {
    Serial.println("JSON invalid");
    digitalWrite(13, LOW); 
     delay(1000);  
    return false;
  }
  else {
    Serial.println("JSON received");
    data.id = root["deviceType"];
    data.valeur = root["value"];
    digitalWrite(13, HIGH);  
     delay(1000);   
    return true;
  }
}

J’ai édité ton message pour le code soit plus lisible !

Essai de rajouter ça dans ton else car tu ne fait que lire les données sans même chercher à comprendre ce qu’elles valent

if(data.valeur == 1){
    digitalWrite(13, HIGH); 
} else {
    digitalWrite(13, LOW); 
}

Ce qui donnera

bool deserialize(actionneurData &data) {
  StaticJsonBuffer<55> jsonBuffer;
  JsonObject& root = jsonBuffer.parseObject(Serial);
  if (root == JsonObject::invalid()) {
    Serial.println("JSON invalid");
    delay(1000);  
    return false;
  }
  else {
    Serial.println("JSON received");
    data.id = root["deviceType"];
    data.valeur = root["value"];

    if(data.valeur == 1){
          digitalWrite(13, HIGH); 
    } else {
          digitalWrite(13, LOW); 
    }

    delay(1000);   
    return true;
  }
}

Ce qui serai mieux c’est de créer une fonction qui test ta valeur et de lui passer en paramètre le data.valeur :slight_smile:

Merci maintenant ca marche. Je vais voir pour les fonctions . :+1:
Bonne soirée.

Bonjour si cela vous intéresse, il y a un module intéressant, bien équipé pour faire du pilotage et acquisition à partir d’un arduino.
https://community-3.gladysassistant.com/t/gladys-arduino-piloter-6-od-acquerir-6-id-et-ia/2342

1 Like