|
|
@@ -1,12 +1,11 @@
|
|
|
#include "ESP12F.h"
|
|
|
#include <WidgetRTC.h>
|
|
|
|
|
|
+#define DEBUG
|
|
|
+
|
|
|
WidgetTerminal terminal(V50);
|
|
|
|
|
|
-/* **************************************************************
|
|
|
- Fonction Perso
|
|
|
- ***************************************************************/
|
|
|
-uint8_t uart_send(uint8_t *in, uint8_t nbTr, uint8_t *out) {
|
|
|
+uint8_t transmition(uint8_t *in, uint8_t nbTr, uint8_t *out) {
|
|
|
int i;
|
|
|
|
|
|
out[0]=0;
|
|
|
@@ -29,34 +28,49 @@ uint8_t uart_send(uint8_t *in, uint8_t nbTr, uint8_t *out) {
|
|
|
while (Serial.available() < SIZEMES) {
|
|
|
time++;
|
|
|
if (time > 1000000) {
|
|
|
- terminal.print("erreur 1 :");
|
|
|
- terminal.println(in[0]);
|
|
|
+ #ifdef DEBUG
|
|
|
+ terminal.print("erreur trans delay");
|
|
|
terminal.flush();
|
|
|
- return 1;
|
|
|
+ #endif
|
|
|
+ return ESP_NOK;
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
Serial.readBytes(out, SIZEMES);
|
|
|
|
|
|
- terminal.print("out[1]");
|
|
|
- terminal.println(out[1]);
|
|
|
- terminal.flush();
|
|
|
-
|
|
|
if (out[0] & MASKMES != in[0] & MASKMES) {
|
|
|
- terminal.print("erreur 2");
|
|
|
+ #ifdef DEBUG
|
|
|
+ terminal.print("erreur trans diff");
|
|
|
terminal.flush();
|
|
|
- return 2;
|
|
|
+ #endif
|
|
|
+ return ESP_NOK;
|
|
|
}
|
|
|
|
|
|
- return 0;
|
|
|
+ if (out[0] & MASKERR != ESP_OK){
|
|
|
+ #ifdef DEBUG
|
|
|
+ terminal.print("erreur trans HAL_ERROR");
|
|
|
+ terminal.flush();
|
|
|
+ #endif
|
|
|
+ return ESP_NOK;
|
|
|
+ }
|
|
|
+
|
|
|
+ return ESP_OK;
|
|
|
+}
|
|
|
+
|
|
|
+float convTemp(uint8_t ent) {
|
|
|
+ return (((float)ent) / 10.0) + 10.0;
|
|
|
}
|
|
|
|
|
|
+float convPH(uint8_t ent) {
|
|
|
+ //TODO
|
|
|
+ return 8.2;
|
|
|
+}
|
|
|
|
|
|
-uint8_t transmition(uint8_t *in, uint8_t nbTr, uint8_t *out) {
|
|
|
- return uart_send(in, nbTr, out);
|
|
|
+int convSalinity(uint8_t ent) {
|
|
|
+ //TODO
|
|
|
+ return 1025;
|
|
|
}
|
|
|
|
|
|
-/*
|
|
|
+
|
|
|
void SyncRTC() {
|
|
|
uint8_t nbTr = 8;
|
|
|
uint8_t in[nbTr];
|
|
|
@@ -73,54 +87,58 @@ void SyncRTC() {
|
|
|
in[6] = minute();
|
|
|
in[7] = second();
|
|
|
|
|
|
- if (transmition(in, nbTr, out)) {
|
|
|
- ;// todo TODO test si retour NOK
|
|
|
+ if (transmition(in, nbTr, out)!=ESP_OK) {
|
|
|
+ exit;// TODO test si retour NOK
|
|
|
}
|
|
|
- ;// todo return 0;
|
|
|
-}*/
|
|
|
-
|
|
|
-float convTemp(uint8_t ent) {
|
|
|
- return (((float)ent) / 10.0) + 10.0;
|
|
|
}
|
|
|
|
|
|
-float convPH(uint8_t ent) {
|
|
|
- //TODO
|
|
|
- return 8.2;
|
|
|
-}
|
|
|
-
|
|
|
-int convSalinity(uint8_t ent) {
|
|
|
- //TODO
|
|
|
- return 1025;
|
|
|
+uint8_t readAction(){
|
|
|
+ uint8_t nbTr = 1;
|
|
|
+ uint8_t in[nbTr];
|
|
|
+ uint8_t out[SIZEMES];
|
|
|
+
|
|
|
+ in[0] = READACTI;
|
|
|
+ if (transmition(in, nbTr, out)!=ESP_OK){
|
|
|
+ #ifdef DEBUG
|
|
|
+ terminal.print("READACTI NOK");
|
|
|
+ terminal.flush();
|
|
|
+ #endif
|
|
|
+
|
|
|
+ return ESP_NOK;
|
|
|
+ }
|
|
|
+
|
|
|
+ Blynk.virtualWrite(V20, (out[1] & ACTIREM) >> DECALREME);
|
|
|
+ Blynk.virtualWrite(V21, (out[1] & ACTIECU) >> DECALECUM);
|
|
|
+ Blynk.virtualWrite(V22, (out[1] & ACTICHA) >> DECALCHAU);
|
|
|
+ Blynk.virtualWrite(V23, (out[1] & ACTIBGE) >> DECALBRAG);
|
|
|
+ Blynk.virtualWrite(V24, (out[1] & ACTIBR1) >> DECALBRA1);
|
|
|
+ Blynk.virtualWrite(V25, (out[1] & ACTIBR2) >> DECALBRA2);
|
|
|
+ Blynk.virtualWrite(V26, (out[1] & ACTI0SO) >> DECALOSMO);
|
|
|
+ Blynk.virtualWrite(V27, (out[1] & ACTINOU) >> DECALNOUR);
|
|
|
+ Blynk.virtualWrite(V28, (out[2] & ACTILUM) >> DECALLUM);
|
|
|
+ Blynk.virtualWrite(V29, (out[2] & ACTIOSM) >> DECALOSMM);
|
|
|
+
|
|
|
+ #ifdef DEBUG
|
|
|
+ terminal.print("READACTI OK");
|
|
|
+ terminal.flush();
|
|
|
+ #endif
|
|
|
+ return ESP_OK;
|
|
|
}
|
|
|
|
|
|
-void Status() {
|
|
|
-
|
|
|
+uint8_t readStatus(){
|
|
|
uint8_t nbTr = 1;
|
|
|
uint8_t in[nbTr];
|
|
|
uint8_t out[SIZEMES];
|
|
|
|
|
|
in[0] = STATUS;
|
|
|
- if (transmition(in, nbTr, out))
|
|
|
- exit; //todo erreur
|
|
|
-/*
|
|
|
- terminal.println("Status");
|
|
|
- terminal.print("out[0]");
|
|
|
- terminal.println(out[0]);
|
|
|
- terminal.print("out[1]");
|
|
|
- terminal.println(out[1]);
|
|
|
- terminal.print("out[2]");
|
|
|
- terminal.println(out[2]);
|
|
|
- terminal.print("out[3]");
|
|
|
- terminal.println(out[3]);
|
|
|
- terminal.print("out[4]");
|
|
|
- terminal.println(out[4]);
|
|
|
- terminal.print("out[5]");
|
|
|
- terminal.println(out[5]);
|
|
|
- terminal.print("out[6]");
|
|
|
- terminal.println(out[6]);
|
|
|
- terminal.print("out[7]");
|
|
|
- terminal.println(out[7]);
|
|
|
- terminal.flush();*/
|
|
|
+ if (transmition(in, nbTr, out)!=ESP_OK){
|
|
|
+ #ifdef DEBUG
|
|
|
+ terminal.print("READSTATUS NOK");
|
|
|
+ terminal.flush();
|
|
|
+ #endif
|
|
|
+ return ESP_NOK;
|
|
|
+ }
|
|
|
+
|
|
|
|
|
|
if (out[5] & 0x80 == 0x80)
|
|
|
TechBas.on();
|
|
|
@@ -142,153 +160,231 @@ void Status() {
|
|
|
else
|
|
|
Reserve.off();
|
|
|
|
|
|
-
|
|
|
float air = convTemp(out[1]);
|
|
|
float eau = convTemp(out[2]);
|
|
|
|
|
|
- Blynk.virtualWrite(V6, air);
|
|
|
- if (air <= 18.0)
|
|
|
- Blynk.notify("Temp air < 18°C");
|
|
|
- if (air >= 29.0)
|
|
|
- Blynk.notify("Temp air > 29°C");
|
|
|
+ Blynk.virtualWrite(V6, air);
|
|
|
+ //TODO a changer les notif
|
|
|
+ if (air <= 18.0)
|
|
|
+ Blynk.notify("Temp air < 18°C");
|
|
|
+ if (air >= 29.0)
|
|
|
+ Blynk.notify("Temp air > 29°C");
|
|
|
+
|
|
|
+ Blynk.virtualWrite(V7, eau);
|
|
|
+ //TODO a changer les notif
|
|
|
+
|
|
|
+ if (eau <= 24.0)
|
|
|
+ Blynk.notify("Temp eau < 24°C");
|
|
|
+ if (eau >= 27.0)
|
|
|
+ Blynk.notify("Temp eau > 27°C");
|
|
|
|
|
|
- Blynk.virtualWrite(V7, eau);
|
|
|
- if (eau <= 24.0)
|
|
|
- Blynk.notify("Temp eau < 24°C");
|
|
|
- if (eau >= 27.0)
|
|
|
- Blynk.notify("Temp eau > 27°C");
|
|
|
+ Blynk.virtualWrite(V8, convPH(out[3]));
|
|
|
+ //TODO notif PH
|
|
|
|
|
|
- Blynk.virtualWrite(V8, convPH(out[3]));
|
|
|
- //TODO notif PH
|
|
|
+ Blynk.virtualWrite(V9, convSalinity(out[4]));
|
|
|
+ //TODO notif sel
|
|
|
|
|
|
- Blynk.virtualWrite(V9, convSalinity(out[4]));
|
|
|
- //TODO notif sel
|
|
|
|
|
|
- //TODO gestion erreur
|
|
|
+ //TODO faire les notif
|
|
|
|
|
|
-/*
|
|
|
- in[0] = READACTI;
|
|
|
- if (transmition(in, nbTr, out))
|
|
|
- exit;//TODO erreur
|
|
|
-
|
|
|
-
|
|
|
- //terminal.println("out[2]: " + out[2]);
|
|
|
-
|
|
|
- Blynk.virtualWrite(V20, (out[1] & ACTIREM) >> DECALREME);
|
|
|
- Blynk.virtualWrite(V21, (out[1] & ACTIECU) >> DECALECUM);
|
|
|
- Blynk.virtualWrite(V22, (out[1] & ACTICHA) >> DECALCHAU);
|
|
|
- Blynk.virtualWrite(V23, (out[1] & ACTIBGE) >> DECALBRAG);
|
|
|
- Blynk.virtualWrite(V24, (out[1] & ACTIBR2) >> DECALBRA2);
|
|
|
- Blynk.virtualWrite(V25, (out[1] & ACTIBR1) >> DECALBRA1);
|
|
|
- Blynk.virtualWrite(V26, (out[1] & ACTI0SO) >> DECALOSMO);
|
|
|
- Blynk.virtualWrite(V27, (out[1] & ACTINOU) >> DECALNOUR);
|
|
|
- Blynk.virtualWrite(V28, (out[2] & ACTILUM) >> DECALLUM);
|
|
|
- Blynk.virtualWrite(V29, (out[2] & ACTIOSM) >> DECALOSMM);
|
|
|
-
|
|
|
- in[0] = READVENT;
|
|
|
- if (transmition(in, nbTr, out))
|
|
|
- exit;
|
|
|
-
|
|
|
- Blynk.virtualWrite(V40, (out[1] & 0xF0) >> 4);
|
|
|
- Blynk.virtualWrite(V41, (out[1] & 0x0F) >> 0);
|
|
|
-
|
|
|
- ;//TODO return 0;
|
|
|
- */
|
|
|
+ //TODO faire les erreurs
|
|
|
+
|
|
|
+ #ifdef DEBUG
|
|
|
+ terminal.print("READSTATUS OK");
|
|
|
+ terminal.flush();
|
|
|
+ #endif
|
|
|
+ return ESP_OK;
|
|
|
+}
|
|
|
+
|
|
|
+uint8_t readVentil(){
|
|
|
+ uint8_t nbTr = 1;
|
|
|
+ uint8_t in[nbTr];
|
|
|
+ uint8_t out[SIZEMES];
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ in[0] = READVENT;
|
|
|
+ if (transmition(in, nbTr, out)!=ESP_OK){
|
|
|
+ #ifdef DEBUG
|
|
|
+ terminal.print("READVENT NOK");
|
|
|
+ terminal.flush();
|
|
|
+ #endif
|
|
|
+ return ESP_NOK;
|
|
|
+ }
|
|
|
+
|
|
|
+ Blynk.virtualWrite(V40, (out[1] & 0xF0) >> 4);
|
|
|
+ Blynk.virtualWrite(V41, (out[1] & 0x0F) >> 0);
|
|
|
+
|
|
|
+ #ifdef DEBUG
|
|
|
+ terminal.print("READVENT OK");
|
|
|
+ terminal.flush();
|
|
|
+ #endif
|
|
|
+ return ESP_OK;
|
|
|
}
|
|
|
|
|
|
+void Status() {
|
|
|
+
|
|
|
+ #ifdef DEBUG
|
|
|
+ terminal.print("New Status");
|
|
|
+ terminal.flush();
|
|
|
+ #endif
|
|
|
+
|
|
|
+ readStatus();
|
|
|
+
|
|
|
+ readAction();
|
|
|
+
|
|
|
+ readVentil();
|
|
|
+
|
|
|
+ #ifdef DEBUG
|
|
|
+ terminal.print("fin Status");
|
|
|
+ terminal.flush();
|
|
|
+ #endif
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
/* **************************************************************
|
|
|
Fonction Blynk
|
|
|
***************************************************************/
|
|
|
|
|
|
+//Remonter
|
|
|
BLYNK_WRITE(V20){
|
|
|
- uint8_t nbTr = 3;
|
|
|
+ uint8_t nbTr = 4;
|
|
|
uint8_t in[nbTr];
|
|
|
uint8_t out[SIZEMES];
|
|
|
- in[0]=0x20;
|
|
|
+ in[0]=WRITACTI;
|
|
|
in[1]=0x00 | (1 << DECALREME);
|
|
|
- in[2] = param.asInt();
|
|
|
- transmition(in,nbTr,out);
|
|
|
+ in[2]=0x00;
|
|
|
+ in[3] = param.asInt();
|
|
|
+ if (transmition(in,nbTr,out)==ESP_OK){
|
|
|
+ ;//TODO pas d'erreur
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
-
|
|
|
+//Ecumeur
|
|
|
BLYNK_WRITE(V21){
|
|
|
- uint8_t nbTr = 3;
|
|
|
+ uint8_t nbTr = 4;
|
|
|
uint8_t in[nbTr];
|
|
|
uint8_t out[SIZEMES];
|
|
|
- in[0]=0x20;
|
|
|
+ in[0]=WRITACTI;
|
|
|
in[1]=0x00 | (1 << DECALECUM);
|
|
|
- in[2] = param.asInt();
|
|
|
+ in[2]=0x00;
|
|
|
+ in[3] = param.asInt();
|
|
|
transmition(in,nbTr,out);
|
|
|
}
|
|
|
|
|
|
+//Chauffage
|
|
|
BLYNK_WRITE(V22){
|
|
|
- uint8_t nbTr = 3;
|
|
|
+ uint8_t nbTr = 4;
|
|
|
uint8_t in[nbTr];
|
|
|
uint8_t out[SIZEMES];
|
|
|
- in[0]=0x20;
|
|
|
+ in[0]=WRITACTI;
|
|
|
in[1]=0x00 | (1 << DECALCHAU);
|
|
|
- in[2] = param.asInt();
|
|
|
+ in[2]=0x00;
|
|
|
+ in[3] = param.asInt();
|
|
|
transmition(in,nbTr,out);
|
|
|
}
|
|
|
|
|
|
+
|
|
|
+//Brassage Général
|
|
|
BLYNK_WRITE(V23){
|
|
|
- uint8_t nbTr = 3;
|
|
|
+ uint8_t nbTr = 4;
|
|
|
uint8_t in[nbTr];
|
|
|
uint8_t out[SIZEMES];
|
|
|
- in[0]=0x20;
|
|
|
+ in[0]=WRITACTI;
|
|
|
in[1]=0x00 | (1 << DECALBRAG);
|
|
|
- in[2] = param.asInt();
|
|
|
+ in[2]=0x00;
|
|
|
+ in[3] = param.asInt();
|
|
|
transmition(in,nbTr,out);
|
|
|
}
|
|
|
|
|
|
+//Brassage1
|
|
|
BLYNK_WRITE(V24){
|
|
|
- uint8_t nbTr = 3;
|
|
|
+ uint8_t nbTr = 4;
|
|
|
uint8_t in[nbTr];
|
|
|
uint8_t out[SIZEMES];
|
|
|
- in[0]=0x20;
|
|
|
+ in[0]=WRITACTI;
|
|
|
in[1]=0x00 | (1 << DECALBRA1);
|
|
|
- in[2] = param.asInt();
|
|
|
+ in[2]=0x00;
|
|
|
+ in[3] = param.asInt();
|
|
|
transmition(in,nbTr,out);
|
|
|
}
|
|
|
|
|
|
+//Brassage 2
|
|
|
BLYNK_WRITE(V25){
|
|
|
- uint8_t nbTr = 3;
|
|
|
+ uint8_t nbTr = 4;
|
|
|
uint8_t in[nbTr];
|
|
|
uint8_t out[SIZEMES];
|
|
|
- in[0]=0x20;
|
|
|
+ in[0]=WRITACTI;
|
|
|
in[1]=0x00 | (1 << DECALBRA2);
|
|
|
- in[2] = param.asInt();
|
|
|
+ in[2]=0x00;
|
|
|
+ in[3] = param.asInt();
|
|
|
transmition(in,nbTr,out);
|
|
|
}
|
|
|
|
|
|
+//Osmolateur ON/OFF
|
|
|
BLYNK_WRITE(V26){
|
|
|
- uint8_t nbTr = 3;
|
|
|
+ uint8_t nbTr = 4;
|
|
|
uint8_t in[nbTr];
|
|
|
uint8_t out[SIZEMES];
|
|
|
- in[0]=0x20;
|
|
|
+ in[0]=WRITACTI;
|
|
|
in[1]=0x00 | (1 << DECALOSMO);
|
|
|
- in[2] = param.asInt();
|
|
|
+ in[2]=0x00;
|
|
|
+ in[3] = param.asInt();
|
|
|
transmition(in,nbTr,out);
|
|
|
}
|
|
|
|
|
|
+//Nourrisage
|
|
|
BLYNK_WRITE(V27){
|
|
|
- uint8_t nbTr = 3;
|
|
|
+ uint8_t nbTr = 4;
|
|
|
uint8_t in[nbTr];
|
|
|
uint8_t out[SIZEMES];
|
|
|
- in[0]=0x20;
|
|
|
+ in[0]=WRITACTI;
|
|
|
in[1]=0x00 | (1 << DECALNOUR);
|
|
|
- in[2] = param.asInt();
|
|
|
+ in[2]=0x00;
|
|
|
+ in[3] = param.asInt();
|
|
|
transmition(in,nbTr,out);
|
|
|
}
|
|
|
|
|
|
+//Osmolateur Manuelle
|
|
|
+BLYNK_WRITE(V28){
|
|
|
+ uint8_t nbTr = 4;
|
|
|
+ uint8_t in[nbTr];
|
|
|
+ uint8_t out[SIZEMES];
|
|
|
+ in[0]=WRITACTI;
|
|
|
+ in[1]=0x00 ;
|
|
|
+ in[2]=0x00| (1 << DECALOSMM);
|
|
|
+ in[3] = param.asInt();
|
|
|
+ transmition(in,nbTr,out);
|
|
|
+}
|
|
|
+
|
|
|
+//Lumiere decante
|
|
|
+BLYNK_WRITE(V29){
|
|
|
+ uint8_t nbTr = 4;
|
|
|
+ uint8_t in[nbTr];
|
|
|
+ uint8_t out[SIZEMES];
|
|
|
+ in[0]=WRITACTI;
|
|
|
+ in[1]=0x00;
|
|
|
+ in[2]=0x00| (1 << DECALLUM);
|
|
|
+ in[3] = param.asInt();
|
|
|
+ transmition(in,nbTr,out);
|
|
|
+}
|
|
|
+
|
|
|
+//delais Brassage
|
|
|
+BLYNK_WRITE(V42){
|
|
|
+ uint8_t nbTr = 2;
|
|
|
+ uint8_t in[nbTr];
|
|
|
+ uint8_t out[SIZEMES];
|
|
|
+ in[0]=DELAYBRA;
|
|
|
+ in[1] = param.asInt();
|
|
|
+ transmition(in,nbTr,out);
|
|
|
+}
|
|
|
|
|
|
|
|
|
/* **************************************************************
|
|
|
Fonction main
|
|
|
***************************************************************/
|
|
|
|
|
|
-uint8_t out[8];
|
|
|
-uint8_t in[8];
|
|
|
+
|
|
|
|
|
|
void setup() {
|
|
|
Serial.begin(38400);
|