Commande de relais dont 1 avec une minuterie

bonjours tout le monde!

je vient vers vous car le suicide me guette! :sourire:

le projet est de commander un radiateur pour une salle de bain mais pendant une durée limitée de 30 minutes
par exemple je voudrais allez prendre ma douche j’apuis sur un bouton sur blink le relais radiateur se colle et 30 minute après le relay s’arrête
alors j’ais déjà réussi à mettre 4 relais en on/off pour de l’éclairage simple mais la pour cette commande temporisé je bloque


#define BLYNK_PRINT Serial


#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>

SimpleTimer timer;



// You should get Auth Token in the Blynk App.
// Go to the Project Settings (nut icon).
char auth[] = "dBF8kYGP7wc40_odN-CS3OdLqowsqDjp"; //You will get this Auth Token in Gmail if you signin Blynk app with your Gmail ID

// Your WiFi credentials.
// Set password to "" for open networks.
char ssid[] = "****"; //Enter your WIFI Name
char pass[] = "****";//Enter your WIFI Password




void setup()
{
  // Debug console
  Serial.begin(9600);
  pinMode(D1,OUTPUT); //radiateur
  pinMode(D2,OUTPUT);
  pinMode(D3,OUTPUT);
  pinMode(D4,OUTPUT);

  digitalWrite(D1,LOW);  //radiateur
  digitalWrite(D2,LOW);
  digitalWrite(D2,LOW);
  digitalWrite(D3,LOW);
  digitalWrite(D4,LOW);
  
  

  Blynk.begin(auth, ssid, pass);
  // You can also specify server:
  //Blynk.begin(auth, ssid, pass, "blynk-cloud.com", 8442);
  //Blynk.begin(auth, ssid, pass, IPAddress(192,168,1,100), 8442);

if (pinMode(D1) >0)
{
  timer.setTimer(5000L);
digitalWrite(D2,LOW);   // eteindre le radiateur
}
    
    }

void loop()
{
  Blynk.run();
  timer.run();

  }  ~~~~
1 Like

@Alvida

utilise virtual pins

#define vPIN_radiateur            V1
Blynk.virtualWrite(vPIN_radiateur, LOW);  

puis

timer.setTimeout(1800000L, radiateur);  //  pour 30 minutes

la function radiateur()

  void radiateur()  {
    Blynk.virtualWrite(vPIN_radiateur, 0);
}
2 Likes

J’ai changé le code et mon bouton D1 en V1 mais rien ne se passe.
je ne comprend pas comment on peut dire que D1 est égal à V1

#define BLYNK_PRINT Serial


#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>

SimpleTimer timer;
#define vPIN_radiateur            V1



// You should get Auth Token in the Blynk App.
// Go to the Project Settings (nut icon).
char auth[] = "dBF8kYGP7wc40_odN-CS3OdLqowsqDjp"; //You will get this Auth Token in Gmail if you signin Blynk app with your Gmail ID

// Your WiFi credentials.
// Set password to "" for open networks.
char ssid[] = "*******"; //Enter your WIFI Name
char pass[] = "y*****";//Enter your WIFI Password




void setup()
{
  // Debug console
  Serial.begin(9600);
  pinMode(D1,OUTPUT); //radiateur
  pinMode(D2,OUTPUT);
  pinMode(D3,OUTPUT);
  pinMode(D4,OUTPUT);

  Blynk.virtualWrite(vPIN_radiateur, LOW);  //radiateur
  digitalWrite(D2,LOW);
  digitalWrite(D2,LOW);
  digitalWrite(D3,LOW);
  digitalWrite(D4,LOW);
  
  

  Blynk.begin(auth, ssid, pass);
  // You can also specify server:
  //Blynk.begin(auth, ssid, pass, "blynk-cloud.com", 8442);
  //Blynk.begin(auth, ssid, pass, IPAddress(192,168,1,100), 8442);

if (vPIN_radiateur>0)
{
  timer.setTimeout(10000L, radiateur);  // 30 MINUTES = 1800000L  pour le test 10000L suffira  
Blynk.virtualWrite(vPIN_radiateur, LOW);   // eteindre le radiateur 
}
    
    }
 void radiateur()  {
    Blynk.virtualWrite(vPIN_radiateur, 0);
}
void loop()
{
  Blynk.run();
  timer.run();

  }

tu dois chercher et lire un peu plus
Il y a beaucoup d’ exemples dans le forum

  BLYNK_WRITE(vPIN_radiateur) {
      int pinValue = param.asInt();
      if (pinValue==1){
                  Blynk.virtualWrite(vPIN_radiateur, HIGH);             
                  digitalWrite(D1, High);  //  relay
                  timer.setTimeout(1800000L, radiateur);
      } else { 
                  digitalWrite (D1, LOW);
                  Blynk.virtualWrite(vPIN_radiateur, LOW);
      }
  }

la function radiateur()

  void radiateur()  {
      digitalWrite (D1, LOW); 
      Blynk.virtualWrite(vPIN_radiateur, LOW);
  }
1 Like

que veut dire param.asInt() ?

ça veut dire que la variable récupérée est de type Int, nombre entier
En clair, on récupère la valeur contenue dans BLYNK_WRITE(vPIN_radiateur)

1 Like


#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>

SimpleTimer timer;
#define vPIN_radiateur            V1



// You should get Auth Token in the Blynk App.
// Go to the Project Settings (nut icon).
char auth[] = "dBF8kYGP7wc40_odN-CS3OdLqowsqDjp"; //You will get this Auth Token in Gmail if you signin Blynk app with your Gmail ID

// Your WiFi credentials.
// Set password to "" for open networks.
char ssid[] = "*******"; //Enter your WIFI Name
char pass[] = "y*****";//Enter your WIFI Password




void setup()
{
  // Debug console
  Serial.begin(9600);
  pinMode(D1,OUTPUT); //radiateur
  pinMode(D2,OUTPUT);
  pinMode(D3,OUTPUT);
  pinMode(D4,OUTPUT);

  Blynk.virtualWrite(vPIN_radiateur,LOW);  //radiateur
  digitalWrite(D1, LOW);
  digitalWrite(D2,LOW);
  digitalWrite(D2,LOW);
  digitalWrite(D3,LOW);
  digitalWrite(D4,LOW);
  
  

  Blynk.begin(auth, ssid, pass);
  // You can also specify server:
  //Blynk.begin(auth, ssid, pass, "blynk-cloud.com", 8442);
  //Blynk.begin(auth, ssid, pass, IPAddress(192,168,1,100), 8442);

 BLYNK_WRITE(vPIN_radiateur) 

      int pinValue = param.asInt();
      
      if (pinValue==1){
                  Blynk.virtualWrite(vPIN_radiateur, HIGH);             
                  digitalWrite(D1,HIGH);  //  relay
                  timer.setTimeout(1800000L, radiateur);
      } else { 
                  digitalWrite (D1, LOW);
                  Blynk.virtualWrite(vPIN_radiateur, LOW);
   }
    
    }
    
 void radiateur()  {
      digitalWrite (D1, LOW); 
      Blynk.virtualWrite(vPIN_radiateur, LOW);
  }
void loop()
{
  Blynk.run();
  timer.run();

  }~~~

~~~Arduino : 1.8.10 (Windows 10), Carte : "NodeMCU 1.0 (ESP-12E Module), 80 MHz, Flash, Disabled, All SSL ciphers (most compatible), 4M (no SPIFFS), v2 Lower Memory, Disabled, None, Only Sketch, 115200"

C:\Users\WOLF\Documents\Arduino\NodeMCU_test1\NodeMCU_test1.ino: In function 'void setup()':

NodeMCU_test1:49:7: error: expected initializer before 'int'

       int pinValue = param.asInt(vPIN_radiateur);

       ^

NodeMCU_test1:51:11: error: 'pinValue' was not declared in this scope

       if (pinValue==1){

           ^

Plusieurs bibliothèque trouvées pour "ESP8266WiFi.h"
Utilisé : C:\Users\WOLF\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.5.2\libraries\ESP8266WiFi
Plusieurs bibliothèque trouvées pour "BlynkSimpleEsp8266.h"
Utilisé : C:\Users\WOLF\Documents\Arduino\libraries\Blynk
exit status 1
expected initializer before 'int'

Ce rapport pourrait être plus détaillé avec
l'option "Afficher les résultats détaillés de la compilation"
activée dans Fichier -> Préférences.

Le setup n’a pas été fermé et la fonction, pas ouverte !
et il faut faire du ménage “Plusieurs bibliothèque trouvées”
`

void setup()
{
  // Debug console
  Serial.begin(9600);
  pinMode(D1,OUTPUT); //radiateur
  pinMode(D2,OUTPUT);
  pinMode(D3,OUTPUT);
  pinMode(D4,OUTPUT);

  Blynk.virtualWrite(vPIN_radiateur,LOW);  //radiateur
  digitalWrite(D1, LOW);
  digitalWrite(D2,LOW);
  digitalWrite(D2,LOW);
  digitalWrite(D3,LOW);
  digitalWrite(D4,LOW);
  
  

  Blynk.begin(auth, ssid, pass);
  // You can also specify server:
  //Blynk.begin(auth, ssid, pass, "blynk-cloud.com", 8442);
  //Blynk.begin(auth, ssid, pass, IPAddress(192,168,1,100), 8442);
} // end setup

BLYNK_WRITE(vPIN_radiateur) { // start function

      int pinValue = param.asInt();
      
      if (pinValue==1){
                  Blynk.virtualWrite(vPIN_radiateur, HIGH);             
                  digitalWrite(D1,HIGH);  //  relay
                  timer.setTimeout(1800000L, radiateur);
      } else { 
                  digitalWrite (D1, LOW);
                  Blynk.virtualWrite(vPIN_radiateur, LOW);
   }
    
    }
1 Like