Barbecue connecté
Le but est de régler le chauffage d’un appareil de cuisson en modifiant le temps de connexion de l’alimentation électrique.
Le réglage du temps de chauffage se fera par le bouton poussoir du relay et/ou par une page html.
Le matériel necessaire
- Un relai Sonoff (10A) (Voici une video qui décrit comment le reprogrammer)
- Un cable (1.5mm2)
- Une prise mâle et une prise femelle
Le code
/*** Customisation du relais Sonoff
Création d’un point d’accès WIFI et un serveur web pour gérer le temps de chauffage
d’un barbecue ou autre appareil électrique de moins de 10 Ampères.
Commande du relai Sonoff:
Réglage FORT : barbecue allumé – led allumée
Réglage MOYEN1 : 10 sec allumé, 3 sec éteint – led éteinte
Réglage MOYEN2 : 10 sec allumé, 6 sec éteint – led éteinte
Réglage BAS : 10 sec allumé, 9 sec éteint – led éteinte
Réglage OFF : bbq éteint – led éteinte
*/
#include
#include
IPAddress apIP(44, 44, 44, 44); // Définition de l’adresse IP statique. (A modifier selon vos souhaits …)
const char *ssid = « LeNomDuReseau »; // Nom du réseau wifi (A modifier selon vos souhaits …)
const char *password = « XXXXXXXXXX »; // mot de passe (A modifier …)
ESP8266WebServer server(80); // Port du serveur
// Sonoff pins
const int led = 13; // LOW = Allumée; HIGH = éteinte
const int pinRelai = 12; // HIGH = Fermé; LOW = ouvert
const int bouton = 0; // pin du bouton poussoir
int etatBp = 0; // pour gérer le bouton poussoir
int choix = 1; // Réglage en cours: 1=FORT, 2=MOYEN1, 3=MOYEN2, 4=BAS 5=OFF;
boolean allume = true; // barbecue allumé (relais fermé)
unsigned long debut; // Pour la gestion du temps
const unsigned long plageAllumee = 10000; // 10 secondes (A modifier selon vos besoins …)
const unsigned long plageEteinte = 3000; // 3 secondes * (choix-1) (A modifier selon vos besoins …)
String getPage() {
String page = «
page += « « ;
page += «
page += «
« ;
page += «
Barbecue Power Control
« ;
if (choix == 1) {
page += «
Reglage en cours = FORT
« ;
} else if (choix == 2) {
page += «
Reglage en cours = MOYEN1
« ;
} else if (choix == 3) {
page += «
Reglage en cours = MOYEN2
« ;
} else if (choix == 4) {
page += «
Reglage en cours = BAS
« ;
} else {
page += «
Reglage en cours = OFF
« ;
}
page += «
« ;
page += « FORT« ;
page += « MOYEN1« ;
page += « MOYEN2« ;
page += « BAS« ;
page += « OFF« ;
page += « « ;
return page;
}
void handleRoot() {
int FortChange = server.arg(« ReglageFort »).toInt();
if (1 == FortChange) {
choix = 1;
}
int Moyen1Change = server.arg(« ReglageMoyen1 »).toInt();
if (1 == Moyen1Change) {
choix = 2;
}
int Moyen2Change = server.arg(« ReglageMoyen2 »).toInt();
if (1 == Moyen2Change) {
choix = 3;
}
int BasChange = server.arg(« ReglageBas »).toInt();
if (1 == BasChange) {
choix = 4;
}
int OFFChange = server.arg(« ReglageOFF »).toInt();
if (1 == OFFChange) {
choix = 5;
}
server.send ( 200, « text/html », getPage() );
}
void handleNotFound() {
String message = « File Not Found\n\n »;
message += « URI: « ;
message += server.uri();
message += « \nMethod: « ;
message += ( server.method() == HTTP_GET ) ? « GET » : « POST »;
message += « \nArguments: « ;
message += server.args();
message += « \n »;
for ( uint8_t i = 0; i < server.args(); i++ ) {
message += " " + server.argName ( i ) + ": " + server.arg ( i ) + "\n";
}
server.send ( 404, "text/plain", message );
}
void setup() {
pinMode (pinRelai, OUTPUT);
digitalWrite (pinRelai, HIGH); // relais fermé (par défaut réglage fort)
pinMode (led, OUTPUT);
digitalWrite (led, LOW); // led allumée
debut = millis();
Serial.begin(115200); // pour le debug ....
Serial.println("Debut de la configuration :");
// mise en place de l'addresse IP
Serial.print("Point d acces ...");
WiFi.mode(WIFI_AP_STA);
Serial.println(WiFi.softAPConfig(apIP, apIP, IPAddress(255, 255, 255, 0)) ? " Ok" : " KO!");
Serial.print("Ssid & pwd...");
Serial.println(WiFi.softAP(ssid, password) ? " OK" : " KO!");
IPAddress myIP = WiFi.softAPIP();
Serial.print("Adresse IP : ");
Serial.println(myIP);
server.on ( "/", handleRoot ); // Page web
server.on ( "/ReglageFort", handleRoot); // Reglage FORT
server.on ( "/ReglageMoyen1", handleRoot); // Reglage MOYEN1
server.on ( "/ReglageMoyen2", handleRoot); // Reglage MOYEN2
server.on ( "/ReglageBas", handleRoot); // Reglage BAS
server.on ( "/ReglageOFF", handleRoot); // Reglage OFF
server.on ( "/inline", []() { // Etat du serveur
if (choix == 1) {
server.send ( 200, "text/plain", "Server OK - Reglage FORT" );
} else if (choix == 2) {
server.send ( 200, "text/plain", "Server OK - Reglage MOYEN1" );
} else if (choix == 3) {
server.send ( 200, "text/plain", "Server OK - Reglage MOYEN2" );
} else if (choix == 4) {
server.send ( 200, "text/plain", "Server OK - Reglage BAS" );
} else {
server.send ( 200, "text/plain", "Server OK - Reglage OFF" );
}
} );
server.onNotFound (handleNotFound);
server.begin();
Serial.println("Serveur HTTP demarre :-)");
}
unsigned long calculDuree() {
unsigned long duree;
if (allume) {
duree = plageAllumee;
} else {
duree = plageEteinte * (choix - 1);
}
return duree;
}
void gestionBarbecue() {
if (choix == 1) {
digitalWrite (pinRelai, HIGH); // barbecue allume
digitalWrite (led, LOW); // led allumée
allume = true;
} else if (choix == 5) {
digitalWrite (pinRelai, LOW); // barbecue éteint
digitalWrite (led, HIGH); // led éteinte
allume = false;
} else {
unsigned long duration = calculDuree();
unsigned long maintenant = millis();
digitalWrite (led, HIGH); // led éteinte
if ((maintenant - debut) > duration) {
if (allume) {
digitalWrite (pinRelai, LOW); // on éteint
allume = false;
} else {
digitalWrite (pinRelai, HIGH); // on allume
allume = true;
}
debut = maintenant;
}
}
}
void loop() {
// gestion du bouton poussoir sur le Sonoff
if (digitalRead(bouton) == LOW) {
Serial.println (« Bouton poussoir presse »);
choix ++; // on incremente le réglage
if (choix > 4) {
choix = 1; // si réglage BAS -> retour au réglage FORT (on ne gére pas le réglage OFF avec le bouton poussoir)
}
delay (1000);
}
gestionBarbecue();
server.handleClient();
}
Leave a reply
You must be logged in to post a comment.