/* Comment this out to disable prints and save space */
#define BLYNK_PRINT Serial

#include <SPI.h>
#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>
#include "ESP12f.h"


/* Global Variable */

// Token identification
char auth[] = "qDSPfbEHHMiQxMNFeKZ2_lKwbxD81Yu8";

// Your WiFi credentials.
char ssid[] = "Livebox-7C2C";
char pass[] = "566C61F61F9C925C9F3D7D79E6";

BlynkTimer timer;
WidgetLED  led1(V11) // Led Tech bas
         , led2(V12) // Led Tech Haut
         , led3(V13) // Led Cuve Haut
         , led4(V14) // Led Reserve Bas
         , led5(V15) // Led Autre1
         , led6(V16); // Led Autre2

/* Fonction */
void setup(){
  // Debug console
  Serial.begin(9600);
  Blynk.begin(auth, ssid, pass);
  timer.setInterval(1000L, statusOrdi); //Configuration du timer pour que toute les seconde ils appelles la fonction de status.
}

void loop(){
	Blynk.run();
	timer.run();
}

void statusOrdi(){
	uint8_t tab[7];
	SPI_Status(tab); //Lecture du status de l'ordinateur
	
	//Transmission temp air
	Blynk.virtualWrite(8, tab[1]);
	//Envoi notification si necessaire
		if (tab[1]<18)
		Blynk.notify("Temérature air trop froid");
	else (tab[1]>29)
		Blynk.notify("Temérature air trop Chaud");
	
	//Transmission temp eau
	Blynk.virtualWrite(9, tab[2]);
	//Envoi notification si necessaire
	if (tab[1]<23)
		Blynk.notify("Temérature Eau trop froid");
	else (tab[1]>29)
		Blynk.notify("Temérature Eau trop Chaud");
	
	//Transmission PH
	Blynk.virtualWrite(10, tab[3]);
	//Envoi notification si necessaire
	if (tab[1]<7.5)
		Blynk.notify("PH trop bas");
	else (tab[1]>8.5)
		Blynk.notify("PH trop Haut");
		
	//Affichage led
	if((tab[4] & MASK_TB) = MASK_TB)
		led1.on();
	else
		led1.off();

	if((tab[4] & MASK_TH) = MASK_TH)
		led2.on();
		Blynk.notify("Cuve technique haut");//Envoi notification si necessaire
	else
		led2.off();

	if((tab[4] & MASK_CH) = MASK_CH)
		led3.on();
	else
		led3.off();

	if((tab[4] & MASK_RB) = MASK_RB)
		led4.on();
		Blynk.notify("Reserve bas");//Envoi notification si necessaire
	else
		led4.off();

	if((tab[4] & MASK_A1) = MASK_A1)
		led5.on();
	else
		led5.off();

	if((tab[4] & MASK_A2) = MASK_A2)
		led6.on();
	else
		led6.off();
	
	// a faire
	//affichage des osmolation passé.
}

BLYNK_WRITE(V20){ //Bouton Ecumeur
	uint8_t data;
	Read_actionneur(data);
	if (param.asInt())
		data = data | MASK_ECU;
	else 
		data = data & (!MASK_ECU);
	Write_actionneur(data);
}

BLYNK_WRITE(V21){ //Bouton Remonter
		uint8_t data;
	Read_actionneur(data);
	if (param.asInt())
		data = data | MASK_ECU;
	else
		data = data & (!MASK_ECU);
	Write_actionneur(data);
}

BLYNK_WRITE(V22){ //Bouton Chauffage
		uint8_t data;
	Read_actionneur(data);
	if (param.asInt())
		data = data | MASK_ECU;
	else
		data = data & (!MASK_ECU);
	Write_actionneur(data);
}

BLYNK_WRITE(V23){ //Bouton Brassage1
		uint8_t data;
	Read_actionneur(data);
	if (param.asInt())
		data = data | MASK_ECU;
	else
		data = data & (!MASK_ECU);
	Write_actionneur(data);
}

BLYNK_WRITE(V24){ //Bouton Brassage2
		uint8_t data;
	Read_actionneur(data);
	if (param.asInt())
		data = data | MASK_ECU;
	else
		data = data & (!MASK_ECU);
	Write_actionneur(data);
}

BLYNK_WRITE(V25){ //Bouton Osmolateur

}

BLYNK_WRITE(V26){ //Bouton Remplisage Osmolateur N2

}

BLYNK_WRITE(V27){ //Bouton Suplémentaire 12V 1

}

BLYNK_WRITE(V28){ //Bouton Suplémentaire 12V 2	

}

BLYNK_WRITE(V29){ //Bouton Lit fluidiser	

}

BLYNK_WRITE(V30){ //Bouton RAH	

}

BLYNK_WRITE(V31){ //Bouton Suplémentaire 230V	

}

BLYNK_WRITE(V32){ //Ventilateur 1
	
}

BLYNK_WRITE(V33){ //Ventilateur 3
	
}

BLYNK_WRITE(V34){ //Ventilateur 3
	
}

BLYNK_WRITE(V35){ //Bouton OSMOLATEUR2 Activé
	
}




