Sfoglia il codice sorgente

Version 2 soft Peristatique nodeMCU

Benjamin Breziat 4 anni fa
parent
commit
a88b853a3d
2 ha cambiato i file con 359 aggiunte e 0 eliminazioni
  1. 3 0
      Soft/MCUnode/Install.txt
  2. 356 0
      Soft/MCUnode/PeristatiqueV2/PeristatiqueV2.ino

+ 3 - 0
Soft/MCUnode/Install.txt

@@ -0,0 +1,3 @@
+Ajouter https://arduino.esp8266.com/stable/package_esp8266com_index.json augestionaire de carte 
+installé la carte ESP8266
+

+ 356 - 0
Soft/MCUnode/PeristatiqueV2/PeristatiqueV2.ino

@@ -0,0 +1,356 @@
+
+
+/* Comment this out to disable prints and save space */
+//#define BLYNK_PRINT Serial
+
+
+//#include <ESP8266WiFi.h>
+#include <BlynkSimpleEsp8266.h>
+#include <TimeLib.h>
+#include <WidgetRTC.h>
+
+
+
+// You should get Auth Token in the Blynk App.
+// Go to the Project Settings (nut icon).
+char auth[] = "5I28lN8RWcLQLvaoRyv0RNuiuBVwy99K";
+
+// Your WiFi credentials.
+// Set password to "" for open networks.
+char ssid[] = "Livebox-7C2C";
+char pass[] = "566C61F61F9C925C9F3D7D79E6";
+
+WidgetRTC rtc;
+
+BlynkTimer timer;
+
+
+//************************************************************************
+//                Variable Global perso
+//************************************************************************
+#define POMPE1 0
+#define POMPE2 1
+#define POMPE3 2
+#define POMPE4 3
+
+#define FACTEURML 635
+
+#define INTER24H 1
+#define INTER12H 2
+#define INTER6H  3
+
+int inter1, inter2, inter3, inter4;
+
+const int PINPOMPE1 = 16;
+const int PINPOMPE2 = 5;
+const int PINPOMPE3 = 4;
+const int PINPOMPE4 = 0;
+
+float ML1 = 0.0;
+float ML2 = 0.0;
+float ML3 = 0.0;
+float ML4 = 0.0;
+
+
+float nbMLTest = 0.0;
+
+bool AUTO1 = false;
+bool AUTO2 = false;
+bool AUTO3 = false;
+bool AUTO4 = false;
+
+#define H1 0
+#define H2 6
+#define H3 12
+#define H4 18
+
+//************************************************************************
+//                Fonction
+//************************************************************************
+void Active1(float ml) {
+  if (AUTO1) {
+    char message[30];
+    digitalWrite(PINPOMPE1, LOW);
+    delay(FACTEURML * ml);
+    digitalWrite(PINPOMPE1, HIGH);
+    Serial.print("Distribue pompe1 : ");
+    Serial.print(ml);
+    Serial.println("ml");
+    sprintf(message, "Distribution %.1fml de calcium", ml);
+    Blynk.notify(message);
+  }
+}
+
+
+void Active2(float ml) {
+  if (AUTO2) {
+    char message[30];
+    digitalWrite(PINPOMPE2, LOW);
+    delay(FACTEURML * ml);
+    digitalWrite(PINPOMPE2, HIGH);
+    Serial.print("Distribue pompe2 : ");
+    Serial.print(ml);
+    Serial.println("ml");
+    sprintf(message, "Distribution %.1fml de KH", ml);
+    Blynk.notify(message);
+  }
+}
+
+void Active3(float ml) {
+  if (AUTO3) {
+    char message[30];
+    digitalWrite(PINPOMPE3, LOW);
+    delay(FACTEURML * ml);
+    digitalWrite(PINPOMPE3, HIGH);
+    Serial.print("Distribue pompe3 : ");
+    Serial.print(ml);
+    Serial.println("ml");
+    sprintf(message, "Distribution %.1fml de Iode", ml);
+    Blynk.notify(message);
+  }
+}
+
+void Active4(float ml) {
+  if (AUTO4) {
+    char message[30];
+    digitalWrite(PINPOMPE4, LOW);
+    delay(FACTEURML * ml);
+    digitalWrite(PINPOMPE4, HIGH);
+    Serial.print("Distribue pompe4 : ");
+    Serial.print(ml);
+    Serial.println("ml");
+    sprintf(message, "Distribution %.1fml de Pompe4", ml);
+    Blynk.notify(message);
+  }
+}
+
+void Ft_Timer() {
+  int Hmin = hour() * 60 + minute();
+  switch (Hmin) {
+    case ( H1):
+      Active1(ML1);
+      break;
+    case ( H1 + 30 ):
+      Active2(ML2);
+      break;
+    case ( H1 + 60 ):
+      Active3(ML3);
+      break;
+    case ( H1 + 90 ):
+      Active4(ML4);
+      break;
+    case H2:
+      if (inter1 == INTER6H)
+        Active1(ML1);
+      break;
+    case H2+30:
+      if (inter2 == INTER6H)
+        Active2(ML2);
+      break;
+    case H2+60:
+      if (inter3 == INTER6H)
+        Active3(ML3);
+      break;
+    case H2+90:
+      if (inter4 == INTER6H)
+        Active4(ML4);
+      break;
+    case H3:
+      if (inter1 == INTER12H)
+        Active1(ML1);
+      break;
+    case H3+30:
+      if (inter2 == INTER12H)
+        Active2(ML2);
+      break;
+    case H3+60:
+      if (inter3 == INTER12H)
+        Active3(ML3);
+      break;
+    case H3+90:
+      if (inter4 == INTER12H)
+        Active4(ML4);
+      break;
+    case H4:
+      if (inter1 == INTER6H)
+        Active1(ML1);
+      break;
+    case H4+30:
+      if (inter2 == INTER6H)
+        Active2(ML2);
+      break;
+    case H4+60:
+      if (inter3 == INTER6H)
+        Active3(ML3);
+      break;
+    case H4+90:
+      if (inter4 == INTER6H)
+        Active4(ML4);
+      break;
+    default:
+      break;
+  }
+}
+
+
+
+
+//************************************************************************
+//                Fonction Blynk
+//************************************************************************
+
+BLYNK_CONNECTED() {
+  Blynk.syncAll();
+  rtc.begin();
+}
+
+
+//Quantité
+BLYNK_WRITE(V0) {
+  float ml = param.asFloat();
+  if (ml < 10) {
+    inter1 = INTER24H;
+    ML1 = ml;
+  }
+  else if (ml < 30) {
+    inter1 = INTER12H;
+    ML1 = ml / 2;
+  }
+  else {
+    inter1 = INTER6H;
+    ML1 = ml / 4;
+  }
+}
+
+BLYNK_WRITE(V1) {
+  float ml = param.asFloat();
+  if (ml < 10) {
+    inter2 = INTER24H;
+    ML2 = ml;
+  }
+  else if (ml < 30) {
+    inter2 = INTER12H;
+    ML2 = ml / 2;
+  }
+  else {
+    inter2 = INTER6H;
+    ML2 = ml / 4;
+  }
+}
+
+BLYNK_WRITE(V2) {
+  float ml = param.asFloat();
+  if (ml < 10) {
+    inter3 = INTER24H;
+    ML3 = ml;
+  }
+  else if (ml < 30) {
+    inter3 = INTER12H;
+    ML3 = ml / 2;
+  }
+  else {
+    inter3 = INTER6H;
+    ML3 = ml / 4;
+  }
+}
+
+BLYNK_WRITE(V3) {
+  float ml = param.asFloat();
+  if (ml < 10) {
+    inter4 = INTER24H;
+    ML4 = ml;
+  }
+  else if (ml < 30) {
+    inter4 = INTER12H;
+    ML4 = ml / 2;
+  }
+  else {
+    inter4 = INTER6H;
+    ML4 = ml / 4;
+  }
+}
+
+//ON/OFF Auto
+BLYNK_WRITE(V4) {
+  if ( param.asInt()) {
+    AUTO1 = true;
+  }
+  else
+    AUTO1 = false;
+
+}
+BLYNK_WRITE(V5) {
+  if ( param.asInt())
+    AUTO2 = true;
+  else
+    AUTO2 = false;
+
+}
+BLYNK_WRITE(V6) {
+  if ( param.asInt())
+    AUTO3 = true;
+  else
+    AUTO3 = false;
+}
+BLYNK_WRITE(V7) {
+  if ( param.asInt())
+    AUTO4 = true;
+  else
+    AUTO4 = false;
+
+}
+
+//Forcé
+BLYNK_WRITE(V12) {
+  if ( param.asInt())
+    Active1(nbMLTest);
+}
+
+BLYNK_WRITE(V13) {
+  if ( param.asInt())
+    Active2(nbMLTest);
+}
+
+BLYNK_WRITE(V14) {
+  if ( param.asInt())
+    Active3(nbMLTest);
+}
+
+BLYNK_WRITE(V15) {
+  if ( param.asInt())
+    Active4(nbMLTest);
+}
+
+
+void setup()
+{
+  // Debug console
+  Serial.begin(9600);
+
+  //Pin Setup
+  pinMode(PINPOMPE1, OUTPUT);
+  pinMode(PINPOMPE2, OUTPUT);
+  pinMode(PINPOMPE3, OUTPUT);
+  pinMode(PINPOMPE4, OUTPUT);
+  digitalWrite(PINPOMPE1, HIGH);
+  digitalWrite(PINPOMPE2, HIGH);
+  digitalWrite(PINPOMPE3, HIGH);
+  digitalWrite(PINPOMPE4, HIGH);
+
+  //Blynk.begin(auth, ssid, pass);
+  // You can also specify server:
+  //Blynk.begin(auth, ssid, pass, "blynk-cloud.com", 80);
+  Blynk.begin(auth, ssid, pass, IPAddress(192, 168, 1, 18), 8081);
+
+  setSyncInterval(10 * 60); // interval de syncro de la RTC (10 min)
+
+  timer.setInterval(600000L, Ft_Timer);
+
+
+}
+
+void loop()
+{
+  Blynk.run();
+  timer.run();
+}