Académique Documents
Professionnel Documents
Culture Documents
h>
#include <WiFiClient.h>
#include <ESP8266WebServer.h>
#include <ezTime.h>
Timezone Montreal;
char monthList[13][16] = {"", "janvier", "février", "mars", "avril", "mai", "juin", "juillet",
"août", "septembre", "octobre", "novembre", "décembre"}; //Le premier est vide sinon janvier
serait 0 au lieu de 1
int eventOuvertureRideaux = 0;
int eventFermetureRideaux = 0;
int jourAJour = 0;
//Variables en lien avec les moteurs
int compteurOuverture = 0;
//Capteurs
bool allOk = 1;
void ouvrirRideaux()
//COUNTERCLOCKWISE
digitalWrite(dirPin, HIGH);
digitalWrite(enablePin, LOW);
while(!digitalRead(colorSensor))
digitalWrite(stepPin, HIGH);
delayMicroseconds(delayStep);
digitalWrite(stepPin, LOW);
delayMicroseconds(delayStep);
compteurOuverture++;
allOk = 0;
break;
yield();
compteurOuverture = 0;
digitalWrite(enablePin, HIGH);
etatRideaux = etatRideauxVoulu;
//CLOCKWISE
digitalWrite(dirPin, LOW);
digitalWrite(enablePin, LOW);
digitalWrite(stepPin, HIGH);
delayMicroseconds(delayStep);
digitalWrite(stepPin, LOW);
delayMicroseconds(delayStep);
yield();
}
digitalWrite(enablePin, HIGH);
etatRideaux = etatRideauxVoulu;
void getLuminosite()
etatVouluFerme();
etatVouluOuvert();
String getPage()
{
String page = "<!DOCTYPE html>";
page += "<head>";
page += "</head>";
page += "<body>";
page += "</div>";
page += "</div>";
page += "<hr>";
page += "</div>";
page += "<hr>";
page += "<tr>";
page += "</tr>";
page += "<tr>";
page += "</tr>";
page += "</table>";
page += "<hr>";
page += "<tr>";
page += "</th>";
page += "</tr>";
page += "<tr class='w3-white'>";
page += "</tr>";
page += "</table>";
page += "<hr>";
page += "<tr>";
page += "</th>";
page += "</tr>";
page += "</tr>";
page += "</table>";
page += "<hr>";
page += "<tr>";
page += "</th>";
page += "</tr>";
page += "<td>";
page += "<br>";
page += "<br>";
page += "</select>";
page += "<br>";
page += "<br>";
page += "</select>";
page += "<br>";
page += "<br>";
page += "</form>";
page += "</td>";
page += "</tr>";
page += "</table>";
page += "</body>";
page += "</html>";
return page;
void handleRoot()
}
void handleToggleEtatVoulu()
etatRideauxVoulu = server.arg("toggle-etat-voulu").toInt();
modeRideaux = 2;
server.sendHeader("Location","/");
server.send(303);
void handleToggleMode()
modeRideaux = server.arg("toggle-mode").toInt();
if(modeRideaux != 1)
updateMinuterie();
server.sendHeader("Location","/");
server.send(303);
void handleTimerSettings()
minuterieOuverture = server.arg("timer-open");
minuterieFermeture = server.arg("timer-close");
updateMinuterie();
server.sendHeader("Location","/");
server.send(303);
void handleNotFound()
void getCurrentTime()
currentTimeString = Montreal.dateTime();
currentTime[0] = Montreal.hour();
minuteExtraZero = "0";
else
minuteExtraZero = "";
currentTime[1] = temp;
currentTime[2] = Montreal.day();
currentTime[3] = Montreal.month();
currentTime[4] = Montreal.year();
void checkPushButton()
if (digitalRead(pushButton))
lastPress = millis();
etatRideauxVoulu = !etatRideauxVoulu;
modeRideaux = 2;
updateMinuterie();
}
}
void updateMinuterie()
if(eventOuvertureRideaux)
deleteEvent(eventOuvertureRideaux);
eventOuvertureRideaux = 0;
if(eventFermetureRideaux)
deleteEvent(eventFermetureRideaux);
eventFermetureRideaux = 0;
if(modeRideaux == 1)
minuterieOuverture = "08:00";
if(minuterieFermeture <= "")
minuterieFermeture = "21:00";
String tempMinuteString;
int tempMinute;
String tempHeureString;
int tempHeure;
tempHeure = tempHeureString.toInt();
tempMinute = tempMinuteString.toInt();
tempHeure = tempHeureString.toInt();
tempMinute = tempMinuteString.toInt();
if(minuterieOuverture)
else
if(minuterieFermeture)
else
else
int dayChanged()
{
if(jourAJour != currentTime[2])
jourAJour = currentTime[2];
updateMinuterie();
return 1;
else
return 0;
void etatVouluOuvert()
etatRideauxVoulu = 1;
void etatVouluFerme()
etatRideauxVoulu = 0;
}
void checkEtats()
if(allOk)
if(etatRideauxVoulu != etatRideaux)
if(etatRideauxVoulu)
ouvrirRideaux();
else
fermerRideaux(totalRotations);
void initialiserRideaux()
etatRideaux = digitalRead(colorSensor);
if(!etatRideaux)
ouvrirRideaux();
else
{
fermerRideaux(10);
ouvrirRideaux();
//Setup
-----------------------------------------------------------------------------------------------------------------
------------------------------ Setup
void setup()
Serial.begin(115200);
pinMode(stepPin, OUTPUT);
pinMode(dirPin, OUTPUT);
pinMode(enablePin, OUTPUT);
pinMode(pushButton, INPUT);
pinMode(colorSensor, INPUT);
pinMode(lightSensor, INPUT);
digitalWrite(enablePin, HIGH);
initialiserRideaux();
WiFi.softAPdisconnect(true);
WiFi.persistent(false);
delay (500);
setDebug(DEBUG);
waitForSync();
Montreal.setLocation("America/Toronto");
Montreal.setDefault();
getCurrentTime();
jourAJour = currentTime[2];
updateMinuterie();
server.onNotFound(handleNotFound);
server.begin();
Serial.println("Setup done");
Serial.println(WiFi.localIP());
//Loop
-----------------------------------------------------------------------------------------------------------------
------------------------------- Loop
void loop()
server.handleClient();
events();
//VÉRIFICATION ÉTATS
checkEtats();
//BOUTON POUSSOIR
checkPushButton();
//Mise à jour de l'heure et lecture de la luminosité
if(minuteChanged())
getCurrentTime();
if(!modeRideaux)
getLuminosite();
if(dayChanged())
updateMinuterie();