Barbecue connecté

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

  1. Un relai Sonoff (10A) (Voici une video qui décrit comment le reprogrammer)
  2. Un cable (1.5mm2)
  3. Une prise mâle et une prise femelle

Le code

<br /> /*** Customisation du relais Sonoff<br /> Création d&#8217;un point d&#8217;accès WIFI et un serveur web pour gérer le temps de chauffage<br /> d&#8217;un barbecue ou autre appareil électrique de moins de 10 Ampères.</p> <p> Commande du relai Sonoff:<br /> Réglage FORT : barbecue allumé &#8211; led allumée<br /> Réglage MOYEN1 : 10 sec allumé, 3 sec éteint &#8211; led éteinte<br /> Réglage MOYEN2 : 10 sec allumé, 6 sec éteint &#8211; led éteinte<br /> Réglage BAS : 10 sec allumé, 9 sec éteint &#8211; led éteinte<br /> Réglage OFF : bbq éteint &#8211; led éteinte<br /> */</p> <p>#include <ESP8266WiFi.h><br /> #include <ESP8266WebServer.h></p> <p>IPAddress apIP(44, 44, 44, 44); // Définition de l&#8217;adresse IP statique. (A modifier selon vos souhaits &#8230;)<br /> const char *ssid = &#8220;LeNomDuReseau&#8221;; // Nom du réseau wifi (A modifier selon vos souhaits &#8230;)<br /> const char *password = &#8220;XXXXXXXXXX&#8221;; // mot de passe (A modifier &#8230;)<br /> ESP8266WebServer server(80); // Port du serveur</p> <p>// Sonoff pins<br /> const int led = 13; // LOW = Allumée; HIGH = éteinte<br /> const int pinRelai = 12; // HIGH = Fermé; LOW = ouvert<br /> const int bouton = 0; // pin du bouton poussoir</p> <p>int etatBp = 0; // pour gérer le bouton poussoir<br /> int choix = 1; // Réglage en cours: 1=FORT, 2=MOYEN1, 3=MOYEN2, 4=BAS 5=OFF;</p> <p>boolean allume = true; // barbecue allumé (relais fermé)<br /> unsigned long debut; // Pour la gestion du temps<br /> const unsigned long plageAllumee = 10000; // 10 secondes (A modifier selon vos besoins &#8230;)<br /> const unsigned long plageEteinte = 3000; // 3 secondes * (choix-1) (A modifier selon vos besoins &#8230;)</p> <p>String getPage() {<br /> String page = &#8220;<html lang=fr-FR><head>&#8220;;<br /> page += &#8220;<meta http-equiv='refresh' content='5; URL=/'>&#8220;;<br /> page += &#8220;<title>SERVER Barbecue</title>&#8220;;<br /> page += &#8220;</p> <style> body { background-color: #fffff; font-family: Arial, Helvetica, Sans-Serif; Color: #000088; }</style> <p>&#8220;;<br /> page += &#8220;</head><body data-rsssl=1></p> <h1>Barbecue Power Control</h1> <p>&#8220;;<br /> if (choix == 1) {<br /> page += &#8220;</p> <h3>Reglage en cours = FORT</h3> <p>&#8220;;<br /> } else if (choix == 2) {<br /> page += &#8220;</p> <h3>Reglage en cours = MOYEN1</h3> <p>&#8220;;<br /> } else if (choix == 3) {<br /> page += &#8220;</p> <h3>Reglage en cours = MOYEN2</h3> <p>&#8220;;<br /> } else if (choix == 4) {<br /> page += &#8220;</p> <h3>Reglage en cours = BAS</h3> <p>&#8220;;<br /> } else {<br /> page += &#8220;</p> <h3>Reglage en cours = OFF</h3> <p>&#8220;;<br /> }<br /> page += &#8220;<br />&#8220;;<br /> page += &#8220;<a href=\"/?ReglageFort=1\"style=\"height: 50px; background-color: red; color: white; padding: 10px;text-decoration: none;margin-left: 5px; border-radius: 10px\">FORT</a>&#8220;;<br /> page += &#8220;<a href=\"/?ReglageMoyen1=1\"style=\"height: 50px; background-color: orange; color: white; padding: 10px;text-decoration: none;margin-left: 30px; border-radius: 10px\">MOYEN1</a>&#8220;;<br /> page += &#8220;<a href=\"/?ReglageMoyen2=1\"style=\"height: 50px; background-color: orange; color: white; padding: 10px;text-decoration: none;margin-left: 30px; border-radius: 10px\">MOYEN2</a>&#8220;;<br /> page += &#8220;<a href=\"/?ReglageBas=1\"style=\"height: 50px; background-color: green; color: white; padding: 10px;text-decoration: none;margin-left: 30px; border-radius: 10px\">BAS</a>&#8220;;<br /> page += &#8220;<a href=\"/?ReglageOFF=1\"style=\"height: 50px; background-color: blue; color: white; padding: 10px;text-decoration: none;margin-left: 30px; border-radius: 10px\">OFF</a>&#8220;;<br /> page += &#8220;</body></html>&#8220;;<br /> return page;<br /> }</p> <p>void handleRoot() {<br /> int FortChange = server.arg(&#8220;ReglageFort&#8221;).toInt();<br /> if (1 == FortChange) {<br /> choix = 1;<br /> }<br /> int Moyen1Change = server.arg(&#8220;ReglageMoyen1&#8221;).toInt();<br /> if (1 == Moyen1Change) {<br /> choix = 2;<br /> }<br /> int Moyen2Change = server.arg(&#8220;ReglageMoyen2&#8221;).toInt();<br /> if (1 == Moyen2Change) {<br /> choix = 3;<br /> }<br /> int BasChange = server.arg(&#8220;ReglageBas&#8221;).toInt();<br /> if (1 == BasChange) {<br /> choix = 4;<br /> }<br /> int OFFChange = server.arg(&#8220;ReglageOFF&#8221;).toInt();<br /> if (1 == OFFChange) {<br /> choix = 5;<br /> }<br /> server.send ( 200, &#8220;text/html&#8221;, getPage() );<br /> }</p> <p>void handleNotFound() {<br /> String message = &#8220;File Not Found\n\n&#8221;;<br /> message += &#8220;URI: &#8220;;<br /> message += server.uri();<br /> message += &#8220;\nMethod: &#8220;;<br /> message += ( server.method() == HTTP_GET ) ? &#8220;GET&#8221; : &#8220;POST&#8221;;<br /> message += &#8220;\nArguments: &#8220;;<br /> message += server.args();<br /> message += &#8220;\n&#8221;;</p> <p> 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 &#038; 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) {<br /> if (allume) {<br /> digitalWrite (pinRelai, LOW); // on éteint<br /> allume = false;<br /> } else {<br /> digitalWrite (pinRelai, HIGH); // on allume<br /> allume = true;<br /> }<br /> debut = maintenant;<br /> }<br /> }<br /> }</p> <p>void loop() {</p> <p> // gestion du bouton poussoir sur le Sonoff<br /> if (digitalRead(bouton) == LOW) {<br /> Serial.println (&#8220;Bouton poussoir presse&#8221;);<br /> choix ++; // on incremente le réglage<br /> if (choix > 4) {<br /> choix = 1; // si réglage BAS -> retour au réglage FORT (on ne gére pas le réglage OFF avec le bouton poussoir)<br /> }<br /> delay (1000);<br /> }</p> <p> gestionBarbecue();<br /> server.handleClient();<br /> }<br />

Leave a reply