diff --git a/Arduino Code/Smart Spritz Machine/Spritz_Dealer/Spritz_Dealer.ino b/Arduino Code/Smart Spritz Machine/Spritz_Dealer/Spritz_Dealer.ino index 8314071..2f78f89 100644 --- a/Arduino Code/Smart Spritz Machine/Spritz_Dealer/Spritz_Dealer.ino +++ b/Arduino Code/Smart Spritz Machine/Spritz_Dealer/Spritz_Dealer.ino @@ -1,6 +1,7 @@ #include #include #include "ArduinoJson.h" + const char* ssid = "Xiaomi_Router"; const char* password = "UYQQMTHF"; @@ -23,6 +24,8 @@ const int mqtt_port = 1883; const char* mqtt_server = "192.168.31.140"; const char* mqtt_client = "WemosD1MiniClient-Spritz"; +bool isCurrentlySpritzing = false; + void setup() { // put your setup code here, to run once: pinMode(leftValve, OUTPUT); @@ -88,10 +91,12 @@ void callback(char* topic, byte* payload, unsigned int length) { payloadString += (char)payload[i]; } + Serial.println("-- Ready for action --"); + DynamicJsonDocument result(1024); deserializeJson(result, payloadString); - if(strcmp(topic, subscribeSpritzTopic) == 0) { + if(strcmp(topic, subscribeSpritzTopic) == 0 && !isCurrentlySpritzing) { int secondsAperol = result["aperol"]; int secondsProsecco = result["prosecco"]; int secondsWater = result["water"]; @@ -100,51 +105,57 @@ void callback(char* topic, byte* payload, unsigned int length) { } void spritzLogic(int secondsAperol, int secondsProsecco, int secondsWater) { - // APEROL - Serial.println("-- Start flow -- APEROL"); - Serial.println("Pompe en avant !"); // Start pump - digitalWrite(centerPump, HIGH); - delay(500); - Serial.println("Valve ouverte"); - digitalWrite(centerValve, HIGH); - Serial.println("Versage"); - delay(secondsAperol); - Serial.println("Valve fermée"); - digitalWrite(centerValve, LOW); - delay(500); - Serial.println("Pompe fermée"); - digitalWrite(centerPump, LOW); - Serial.println("-- End flow -- APEROL"); - - Serial.println("-- Start flow -- PROSECCO"); - Serial.println("Pompe en avant !"); // Start pump - digitalWrite(rightPump, HIGH); - delay(500); - Serial.println("Valve ouverte"); - digitalWrite(rightValve, HIGH); - Serial.println("Versage"); - delay(secondsProsecco); - Serial.println("Valve fermée"); - digitalWrite(rightValve, LOW); - delay(500); - Serial.println("Pompe fermée"); - digitalWrite(rightPump, LOW); - Serial.println("-- End flow -- PROSECCO"); - - Serial.println("-- Start flow -- WATER"); - Serial.println("Pompe en avant !"); // Start pump - digitalWrite(leftPump, HIGH); - delay(500); - Serial.println("Valve ouverte"); - digitalWrite(leftValve, HIGH); - Serial.println("Versage"); - delay(secondsWater); - Serial.println("Valve fermée"); - digitalWrite(leftValve, LOW); - delay(500); - Serial.println("Pompe fermée"); - digitalWrite(leftPump, LOW); - Serial.println("-- End flow -- WATER"); + isCurrentlySpritzing = true; + if (secondsAperol > 0) { + // APEROL + Serial.println("-- Start flow -- APEROL"); + Serial.println("Pompe en avant !"); // Start pump + digitalWrite(centerPump, HIGH); + delay(500); + Serial.println("Valve ouverte"); + digitalWrite(centerValve, HIGH); + Serial.println("Versage"); + delay(secondsAperol); + Serial.println("Valve fermée"); + digitalWrite(centerValve, LOW); + delay(500); + Serial.println("Pompe fermée"); + digitalWrite(centerPump, LOW); + Serial.println("-- End flow -- APEROL"); + } + if (secondsProsecco > 0) { + Serial.println("-- Start flow -- PROSECCO"); + Serial.println("Pompe en avant !"); // Start pump + digitalWrite(rightPump, HIGH); + delay(500); + Serial.println("Valve ouverte"); + digitalWrite(rightValve, HIGH); + Serial.println("Versage"); + delay(secondsProsecco); + Serial.println("Valve fermée"); + digitalWrite(rightValve, LOW); + delay(500); + Serial.println("Pompe fermée"); + digitalWrite(rightPump, LOW); + Serial.println("-- End flow -- PROSECCO"); + } + if (secondsWater > 0) { + Serial.println("-- Start flow -- WATER"); + Serial.println("Pompe en avant !"); // Start pump + digitalWrite(leftPump, HIGH); + delay(500); + Serial.println("Valve ouverte"); + digitalWrite(leftValve, HIGH); + Serial.println("Versage"); + delay(secondsWater); + Serial.println("Valve fermée"); + digitalWrite(leftValve, LOW); + delay(500); + Serial.println("Pompe fermée"); + digitalWrite(leftPump, LOW); + Serial.println("-- End flow -- WATER"); + } + isCurrentlySpritzing = false; } void reconnect() {