#define BLYNK_TEMPLATE_ID "TMPL6JehshEsr"
#define BLYNK_TEMPLATE_NAME "Quickstart Template"
#define BLYNK_AUTH_TOKEN "_g2H3-EGHDdLk-hKURXwZHetftkHT2Iw"
//ce qui est au dessus est à copier du site Blynk
#define BLYNK_PRINT Serial
#define BlynkTemp V0
#define BlynkHumi V1
#define BlynkTerminal V2
int dhtPin = 21;
#define RED_LED 4
#define BLUE_LED 5
#define LCD_ADDRESS 0x3F
//#define LCD_ADDRESS 0x27
// Define LCD characteristics
#define LCD_ROWS 4
#define LCD_COLUMNS 20
#define SCROLL_DELAY 150
#define BACKLIGHT 255
// object initialization
#include <Wire.h>
#include <WiFi.h>
#include <WiFiClient.h>
#include <BlynkSimpleEsp32.h>
#include <DHTesp.h>
#include <LiquidCrystal_I2C.h>
int lcdColumns = 16;
int lcdRows = 2;
LiquidCrystal_I2C lcd(0x27, lcdColumns, lcdRows);
WidgetTerminal Terminal(V2);
DHTesp mydht;// on crée un objet nommé "mydht"
BlynkTimer mytimer; //Pareil
char auth[]="_g2H3-EGHDdLk-hKURXwZHetftkHT2Iw";
char ssid[]="Wokwi-GUEST";
char pass[]="";
void setup() {
// initialize LCD
lcd.init();
// turn on LCD backlight
lcd.backlight();
// set cursor to first column, first row
lcd.setCursor(0, 0);
mydht.setup(dhtPin,DHTesp::DHT22);
mytimer.setInterval(1000L,readDHT);//temps qu'on met entre chaque actualisation (1000 ms)
Blynk.begin(auth,ssid,pass,"blynk.cloud",80);
/*Meme manière de le faire :
blynk.begin(BLYNK_AUTH_TOKEN,"Wokwi-GUEST","","blynk.could",80);*/
}
void readDHT()
{
TempAndHumidity values = mydht.getTempAndHumidity();
Blynk.virtualWrite(BlynkTemp,values.temperature);
Blynk.virtualWrite(BlynkHumi,values.humidity);
/*
if(values.humidity>=50)
{
digitalWrite(RED_LED, HIGH);
delay(1000);
digitalWrite(RED_LED,LOW);
delay(1000);
}
if(values.temperature>=30)
{
digitalWrite(BLUE_LED, HIGH);
delay(1000);
digitalWrite(BLUE_LED,LOW);
delay(1000);
}
*/
}
BLYNK_WRITE(BlynkTerminal)
{
String TerminalCommand=param.asStr();
if(TerminalCommand=="Red On")
{
digitalWrite(RED_LED,HIGH);
lcd.print(TerminalCommand);
delay(5000);
lcd.clear();
}
else if(TerminalCommand=="Red Off")
{
digitalWrite(RED_LED,LOW);
lcd.print(TerminalCommand);
delay(5000);
lcd.clear();
}
else if(TerminalCommand=="Blue On")
{
digitalWrite(BLUE_LED,HIGH);
lcd.print(TerminalCommand);
delay(5000);
lcd.clear();
}
else if(TerminalCommand=="Blue Off")
{
digitalWrite(BLUE_LED,LOW);
lcd.print(TerminalCommand);
delay(5000);
lcd.clear();
}
else if(TerminalCommand=="Red Blink")
{
lcd.print(TerminalCommand);
delay(5000);
lcd.clear();
while(TerminalCommand!="Red Stop Blink")
{
digitalWrite(RED_LED,LOW);
delay(1000);
digitalWrite(RED_LED,HIGH);
delay(1000);
lcd.print(TerminalCommand);
delay(5000);
lcd.clear();
}
}
else if(TerminalCommand=="Red Stop Blink")
{
digitalWrite(RED_LED,LOW);
lcd.print(TerminalCommand);
delay(5000);
lcd.clear();
}
else if(TerminalCommand=="Blue Blink")
{
lcd.print(TerminalCommand);
delay(5000);
while(TerminalCommand!="Blue Stop Blink")
{
digitalWrite(BLUE_LED,LOW);
delay(1000);
digitalWrite(BLUE_LED,HIGH);
delay(1000);
lcd.print(TerminalCommand);
delay(5000);
lcd.clear();
}
}
else if(TerminalCommand=="Blue Stop Blink")
{
digitalWrite(BLUE_LED,LOW);
lcd.print(TerminalCommand);
delay(5000);
}
else if(TerminalCommand=="Temp")
{
TempAndHumidity values = mydht.getTempAndHumidity();
Terminal.println(values.temperature);
lcd.print(TerminalCommand);
delay(5000);
lcd.clear();
}
else if(TerminalCommand=="Humi")
{
TempAndHumidity values = mydht.getTempAndHumidity();
Terminal.println(values.humidity);
lcd.print(TerminalCommand);
delay(5000);
lcd.clear();
}
else if(TerminalCommand=="Clear")
{
Terminal.clear();
lcd.print(TerminalCommand);
delay(1000);
lcd.clear();
}
else{
Terminal.println("Invalid Command");
lcd.print(TerminalCommand);
delay(5000);
lcd.clear();
}
}
void loop() {
mytimer.run();
Blynk.run();
}