M09 D2.2 Fase 5-6
Fase 5-6
//emed-nodeMCU-5-6
//10.01.2020
//nodeMCU
//@rPrimTech Jaume Nogués
#define BLYNK_PRINT Serial
#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>
#include <DHT11.h>
DHT11 sensor(10);
#include "Seeed_BME280.h" //https://github.com/Seeed-Studio/Grove_BME280
#include <Wire.h>
BME280 bme280;
// You should get Auth Token in the Blynk App.
// Go to the Project Settings (nut icon).
char auth[] = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";
// Your WiFi credentials.
// Set password to "" for open networks.
char ssid[] = "emed";
char pass[] = "pitufito";
BlynkTimer timer;
boolean stateGPIO16=0;
boolean stateGPIO0=0;
boolean prevstateGPIO0=0;
boolean stateGPIO2=0;
boolean prevstateGPIO2=0;
boolean stateGPIO13=0;
boolean prevstateGPIO13=0;
boolean stateGPIO12=0;
boolean prevstateGPIO12=0;
boolean stateGPIO14=0;
boolean prevstateGPIO14=0;
void setup()
{
// Debug console
pinMode(16, OUTPUT);
Serial.begin(115200);
Serial.println(" ");
pinMode(12, INPUT);
pinMode(14, INPUT);
pinMode(0, OUTPUT);
pinMode(2, OUTPUT);
pinMode(13, OUTPUT);
digitalWrite(0, HIGH);
digitalWrite(2, HIGH);
//Blynk.begin(auth, ssid, pass);
// You can also specify server:
//Blynk.begin(auth, ssid, pass, "vps249990.ovh.net", 8080);
Blynk.begin(auth, ssid, pass, IPAddress(167,86,87,117), 8080);
if(!bme280.init()){
Serial.println("BME280 Device error!");
}
timer.setInterval(300L, checkInputsOutputs);
timer.setInterval(10002L, uptime);
//timer.setInterval(20000L, mesuraDHT);
timer.setInterval(23000L, mesuraBMP);
}
void loop()
{
Blynk.run();
timer.run();
}
void uptime()
{
Blynk.virtualWrite(V0, millis() / 1000);
}
void mesuraDHT()
{
uint32_t res = sensor.leer();
float t=sensor.temperatura_C();
float h=sensor.humedad();
Serial.print("[TDHT] ");
Serial.println(t); // temperatura en graus Celsius
Serial.print("[HDHT] ");
Serial.println(h); // humitat en %
Serial.println(" ");
Blynk.virtualWrite(V1, t);
Blynk.virtualWrite(V2, h);
}
void checkInputsOutputs()
{
digitalWrite(16,stateGPIO16);
stateGPIO16=!stateGPIO16;
stateGPIO0=digitalRead(0);
if (stateGPIO0!=prevstateGPIO0)
{
if (stateGPIO0==0) Blynk.virtualWrite(V3,255);
if (stateGPIO0==1) Blynk.virtualWrite(V3,0);
}
prevstateGPIO0=stateGPIO0;
stateGPIO2=digitalRead(2);
if (stateGPIO2!=prevstateGPIO2)
{
if (stateGPIO2==0) Blynk.virtualWrite(V4,255);
if (stateGPIO2==1) Blynk.virtualWrite(V4,0);
}
prevstateGPIO2=stateGPIO2;
//********************Polsador GPIO12 (S1) a sortida GPIO13 (H3)***************************
stateGPIO12=digitalRead(12);
if (prevstateGPIO12==0 && stateGPIO12==1)
{
bool temp=digitalRead(13);
if (temp){ digitalWrite(13,LOW); Blynk.virtualWrite(V5,0);}
if (!temp){ digitalWrite(13,HIGH); Blynk.virtualWrite(V5,255);}
prevstateGPIO12=1;
}
if (prevstateGPIO12==1 && stateGPIO12==0)
{
prevstateGPIO12=0;
}
stateGPIO13=digitalRead(13);
if (stateGPIO13!=prevstateGPIO13)
{
if (stateGPIO13==0) Blynk.virtualWrite(V5,0);
if (stateGPIO13==1) Blynk.virtualWrite(V5,255);
}
prevstateGPIO13=stateGPIO13;
//*************************************************************************************
//***************************Sensor finestra oberta/tancada*****************************
stateGPIO14=digitalRead(14);
if (stateGPIO14!=prevstateGPIO14)
{
if (stateGPIO14==0) Blynk.virtualWrite(V6,"TANCADA");
if (stateGPIO14==1)
{
Blynk.notify("Finestra OBERTA!!");//Max. 1 notificació cada 5 segons
Blynk.virtualWrite(V6,"OBERTA");
//Blynk.email("pepito@gmail.com", "ALERTA!!", "Finestra OBERTA!!");//Max. 1 mail cada 5 segons
}
}
prevstateGPIO14=stateGPIO14;
//*************************************************************************************
}
BLYNK_CONNECTED() {
Blynk.syncAll();
}
void mesuraBMP()
{
float T_BMP=bme280.getTemperature();
float H_BMP=bme280.getHumidity();
float P_BMP=bme280.getPressure()/100;//Pa-->hPa
//get and print temperature
Serial.print("[TBMP] ");
Serial.println(T_BMP);
//get and print humidity data
Serial.print("[HBMP] ");
Serial.println(H_BMP);
//get and print atmospheric pressure data
Serial.print("[PBMP] ");
Serial.println(P_BMP);
Serial.println(" ");
Blynk.virtualWrite(V9,T_BMP);
Blynk.virtualWrite(V10,H_BMP);
Blynk.virtualWrite(V11,P_BMP);
}