@Massimotruglio83 wrote:
//#define CAYENNE_DEBUG // Uncomment to show debug messages #define CAYENNE_PRINT Serial // Comment this out to disable prints and save space #include <CayenneMQTTEthernet.h> // Cayenne authentication info. This should be obtained from the Cayenne Dashboard. char username[] = ""; char password[] = ""; char clientID[] = ""; #define RELAY_DIGITAL_PIN 9 #define RELAY_DIGITAL_PIN2 4 #define RELAY_DIGITAL_PIN3 5 #define RELAY_DIGITAL_PIN4 7 #define PUBLISH_DELAY 5000 int luminosita; //Il valore letto dalla fotoresistenza int umidita; int sensorepioggia; int CICLO=1; int x=0; int a=0; int b=0; int c=0; unsigned long lastMillis=0; unsigned long previousMillis=0; unsigned long y=0; void setup() { Serial.begin(9600); Cayenne.begin(username, password, clientID); pinMode(RELAY_DIGITAL_PIN, OUTPUT); pinMode(RELAY_DIGITAL_PIN2, OUTPUT); pinMode(RELAY_DIGITAL_PIN3, OUTPUT); pinMode(RELAY_DIGITAL_PIN4, OUTPUT); digitalWrite(RELAY_DIGITAL_PIN, HIGH); digitalWrite(RELAY_DIGITAL_PIN2, HIGH); digitalWrite(RELAY_DIGITAL_PIN4, HIGH); digitalWrite(RELAY_DIGITAL_PIN3, HIGH); CAYENNE_LOG("Sync data"); Serial.print("valore del ciclo ="); Serial.println(CICLO); Cayenne.virtualWrite(4,0); Cayenne.virtualWrite(5,0); Cayenne.virtualWrite(6,0); Cayenne.virtualWrite(21,0); Cayenne.virtualWrite(22,0); Cayenne.virtualWrite(23,0); pinMode(A1, INPUT); pinMode(8, INPUT); pinMode(2,INPUT); } void loop() { Cayenne.loop(); if (millis() - previousMillis > PUBLISH_DELAY) { previousMillis = millis(); luminosita = !digitalRead(2); //Lettura della luminosità umidita = analogRead(A1); Serial.print("luminosita = "); Serial.println(luminosita); Serial.print("umidita = "); Serial.println(umidita); sensorepioggia=digitalRead(8); Serial.print("sensore pioggia ="); Serial.println(sensorepioggia); } if (x == 1) { if (millis() - lastMillis > y && a == 1) { delay(10000); digitalWrite(RELAY_DIGITAL_PIN2, HIGH); b = 1; lastMillis = millis(); digitalWrite(RELAY_DIGITAL_PIN3, LOW); a = 0; Serial.println("iniziato Ciclo If"); Cayenne.virtualWrite(21,0); Cayenne.virtualWrite(22,1); } if (b == 1) { if (millis() - lastMillis > y && b == 1) { delay(10000); digitalWrite(RELAY_DIGITAL_PIN3, HIGH); b = 0; lastMillis = millis(); c =1; digitalWrite(RELAY_DIGITAL_PIN4, LOW); Serial.println("secondo step"); Cayenne.virtualWrite(22,0); Cayenne.virtualWrite(23,1); } } if (c == 1) { if (millis() - lastMillis > y && c == 1) { delay(10000); digitalWrite(RELAY_DIGITAL_PIN4, HIGH); c = 0; lastMillis = millis(); Serial.println("terzo step"); Cayenne.virtualWrite(23,0); Cayenne.virtualWrite(10,0); Cayenne.virtualWrite(11,0); Serial.println("fine ciclo irrigazione"); } } } } // Default function for sending sensor data at intervals to Cayenne. // You can also use functions for specific channels, e.g CAYENNE_OUT(1) for sending channel 1 data. CAYENNE_OUT_DEFAULT() { // Write data to Cayenne here. This example just sends the current uptime in milliseconds on virtual channel 0. Cayenne.virtualWrite(0, millis()); //Cayenne.virtualWrite(1, luminosita); Cayenne.luxWrite(1, luminosita); Cayenne.virtualWrite(2, umidita,TYPE_RELATIVE_HUMIDITY,UNIT_PERCENT); Cayenne.virtualWrite(8, sensorepioggia); //Write data to Cayenne here. This example just sends the current uptime in milliseconds. Serial.println("Finito invio"); //sensorepioggia=digitalRead(10); //Serial.println(sensorepioggia); //Cayenne.virtualWrite(10, sensorepioggia); //Cayenne.virtualWrite(3, 50, TYPE_PROXIMITY, UNIT_CENTIMETER); } // Default function for processing actuator commands from the Cayenne Dashboard. // You can also use functions for specific channels, e.g CAYENNE_IN(1) for channel 1 commands. CAYENNE_IN(3) { CAYENNE_LOG("CAYENNE_IN_DEFAULT(%u) - %s, %s", request.channel, getValue.getId(), getValue.asString()); //Process message here. If there is an error set an error message using getValue.setError(), e.g getValue.setError("Error message"); // get value sent from dashboard int currentValue = getValue.asInt(); // 0 to 1 // assuming you wire your relay as normally open if (currentValue == 0) { digitalWrite(RELAY_DIGITAL_PIN, HIGH); } else { digitalWrite(RELAY_DIGITAL_PIN, LOW); } } CAYENNE_IN(4) { CAYENNE_LOG("CAYENNE_IN_DEFAULT(%u) - %s, %s", request.channel, getValue.getId(), getValue.asString()); //Process message here. If there is an error set an error message using getValue.setError(), e.g getValue.setError("Error message"); // get value sent from dashboard int currentValue = getValue.asInt(); // 0 to 1 // assuming you wire your relay as normally open if (currentValue == 0) { digitalWrite(RELAY_DIGITAL_PIN2, HIGH); } else { digitalWrite(RELAY_DIGITAL_PIN2,LOW); } } CAYENNE_IN(5) { CAYENNE_LOG("CAYENNE_IN_DEFAULT(%u) - %s, %s", request.channel, getValue.getId(), getValue.asString()); //Process message here. If there is an error set an error message using getValue.setError(), e.g getValue.setError("Error message"); // get value sent from dashboard int currentValue = getValue.asInt(); // 0 to 1 // assuming you wire your relay as normally open if (currentValue == 0) { digitalWrite(RELAY_DIGITAL_PIN3, HIGH); } else { digitalWrite(RELAY_DIGITAL_PIN3, LOW); } } CAYENNE_IN(6) { CAYENNE_LOG("CAYENNE_IN_DEFAULT(%u) - %s, %s", request.channel, getValue.getId(), getValue.asString()); //Process message here. If there is an error set an error message using getValue.setError(), e.g getValue.setError("Error message"); // get value sent from dashboard int currentValue = getValue.asInt(); // 0 to 1 // assuming you wire your relay as normally open if (currentValue == 0) { digitalWrite(RELAY_DIGITAL_PIN4, HIGH); } else { digitalWrite(RELAY_DIGITAL_PIN4, LOW); } } CAYENNE_IN(10) { CAYENNE_LOG("CAYENNE_IN_DEFAULT(%u) - %s, %s", request.channel, getValue.getId(), getValue.asString()); x = getValue.asInt(); // 0 to 1 lastMillis = millis(); digitalWrite(RELAY_DIGITAL_PIN2 , LOW); a = 1; Serial.println(" inizio ciclo da ="); Serial.println(y); Cayenne.virtualWrite(11,1); Cayenne.virtualWrite(21,1); } CAYENNE_IN(12) { CAYENNE_LOG("CAYENNE_IN_DEFAULT(%u) - %s, %s", request.channel, getValue.getId(), getValue.asString()); CICLO = getValue.asInt(); // 0 to 1 y = CICLO * 50000; Serial.print(" Valore variabile ciclo ="); Serial.println(y); } CAYENNE_IN_DEFAULT() { CAYENNE_LOG("Channel %u, value %s", request.channel, getValue.asString()); //Process message here. If there is an error set an error message using getValue.setError(), e.g getValue.setError("Error message"); }
Posts: 4
Participants: 2