Bonjour a tous !
Je suis en train de faire un code sur ce principe :
- deux cycle de differente durée : 12 et 18 heure
- ces deux cycle s'enclenche selon une variable
- le tout basé sur l'horloge RTC
Ca c'est ok pour moi
La ou je peche c'est sur la verification du cycle. J'ai besoin de verifier que depuis le declenchement du cylcle ce sont bien ecoulé les 12 ou 18 heure pour pouvoir definir si je suis dans un cycle ou pas.
Pour l'instant j'utilise le modulo qui me donne un timeOff depuis un timeON mais quand je verifie if (Hour >= timeOn && Hour <= timeOff) si le timeOff depasse minuit ca ne fonctionne plus.
De ce fait j'aimerais utiliser Timespan de RTClib ( qui me semble compte les heures passée depuis un moment donné ). Mais je ne sais aps du tout comment le mettre en place. Quelqu'un pourrait m'aider ?
( attention c'est un epu le bazard code en cours de construction
)
#define BLYNK_PRINT Serial
#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>
#include <TimeLib.h>
#include <WidgetRTC.h>
BlynkTimer timer;
///////////////////////////////////////////VPIN RECEVEUR///////////////////////////////////////////////
WidgetBridge bridge1(V10); //Temp Som
////////////////////////////////////////////////////////WIDGET///////////////////////////////////////////////////////////////////////////////////
WidgetTerminal terminal(V100);
WidgetLED ledGrow(V20);
WidgetLED ledFlow(V21);
WidgetLED etatCyle(V22);
WidgetRTC rtc;
////////////////////////////////////////////////////////CONSTANTE///////////////////////////////////////////////////////////////////////////////////
int timeOn;
int timeOff;
int cycle;
int Hour = hour();
int cycleOn;
int cycleOff;
int tempSom;
int ThermoCycleOn;
int ThermoCycleOff;
////////////////////////////////////////////////////////BLYNK///////////////////////////////////////////////////////////////////////////////////
BLYNK_CONNECTED() {
Blynk.syncAll();
}
BLYNK_WRITE(V1) {
timeOn = param.asInt();
}
BLYNK_WRITE(V2) {
cycle = param.asInt();
}
BLYNK_WRITE(V6) {
ThermoCycleOn = param.asInt();
}
BLYNK_WRITE(V7) {
ThermoCycleOff = param.asInt();
}
BLYNK_WRITE(V10) {
tempSom = param.asInt();
}
char auth[] = "9gw7Oh3IFKwiP9ZYNDvYYLV7HbwcV8Se";
char ssid[] = "xx";
char pass[] = "xx";
////////////////////////////////////////////////////////SETUP///////////////////////////////////////////////////////////////////////////////////
void setup()
{
// Debug console
Serial.begin(9600);
Blynk.begin(auth, ssid, pass, IPAddress(10, 3, 141, 1), 8080);
rtc.begin();
setSyncInterval(500);
timer.setInterval(1000L, setupCycle);
timer.setInterval(1000L, printTerminal);
timer.setInterval(1000L, etatCycle);
timer.setInterval(1000L, temperature);
terminal.clear();
terminal.println("Controleur Indoor V1.2");
terminal.println("");
terminal.println("---------------------------");
terminal.flush();
}
void loop() {
Blynk.run();
timer.run();
}
////////////////////////////////////////////////////////DEBUG///////////////////////////////////////////////////////////////////////////////////
void printTerminal() {
int Hour = hour();
Serial.println("---------------------------");
Serial.println("");
Serial.print("Time On : ");
Serial.println(timeOn);
Serial.print("Time Off: ");
Serial.println(timeOff);
//Serial.print("Heure actuelle : ");
//Serial.println(Hour);
Serial.println("");
Serial.println("---------------------------");
terminal.print("Time On : ");
terminal.println(timeOn);
terminal.print("Time Off: ");
terminal.println(timeOff);
//terminal.print("Heure actuelle : ");
//terminal.println(Hour);
terminal.println("");
terminal.println("---------------------------");
terminal.println("");
terminal.flush();
}
////////////////////////////////////////////////////////SELECTION CYCLE///////////////////////////////////////////////////////////////////////////////////
void setupCycle() {
int Hour = hour();
if (cycle == HIGH) {
timeOff = (timeOn + 18) % 24;
Blynk.virtualWrite(V20, 255);
Blynk.virtualWrite(V21, 0);
}
if (cycle == LOW) {
timeOff = (timeOn + 12) % 24;
Blynk.virtualWrite(V20, 0);
Blynk.virtualWrite(V21, 255);
}
}
////////////////////////////////////////////////////////ETAT CYCLE///////////////////////////////////////////////////////////////////////////////////
void etatCycle() {
int Hour = hour();
if (Hour >= timeOn && Hour <= timeOff)
{
cycleOn = 1;
cycleOff = 0;
Serial.println("Cycle On");
terminal.println("Cycle On");
Blynk.virtualWrite(V22, 255);
}
else
{
cycleOff = 1;
cycleOn = 0;
Serial.println("Cycle Off");
terminal.println("Cycle Off");
Blynk.virtualWrite(V22, 0);
}
}
void temperature()
{
}