Log in to unlock Raspberry Pi 5 for $60 (was $80) with $100+ in eligible purchases.
int boardLed = D7; //LED D7 for testing purposes int moisture_pin = A1; //connection point for moisture sensor bool messageSent = false; //variable for checking if notification has been sent to phone String plantWatered = "Your plant has been watered and is moist"; void setup() { pinMode(boardLed,OUTPUT); //output to turn on LED for setup pinMode(moisture_pin,INPUT); //Input from moisture sensor //Flashes LED to indicate that flash is successful. digitalWrite(boardLed,HIGH); delay(2000); digitalWrite(boardLed,LOW); delay(2000); digitalWrite(boardLed,HIGH); delay(2000); digitalWrite(boardLed,LOW); delay(2000); } void loop() { //digitalWrite(boardLed,HIGH); // Now we'll take some readings... int moisture_analog = analogRead(moisture_pin); // read capacitive sensor float moisture_percentage = (100 - ((moisture_analog/4095.00) * 100 )); Particle.subscribe("handshake", handShake, "34002f000a47373336373936"); //Subscribe command to listen to other device if (moisture_percentage <= 22 && messageSent == false){ //Checks if moisture percentage is below threshold and also checks if the water message has been sent Particle.publish("moisturePercentage", String(moisture_percentage),60,PUBLIC); //Publishes for message to be sent } if (moisture_percentage > 40 && messageSent == true){ //Checks if moisture levels have gone back up and also checks if message has been sent Particle.publish("plantWatered", plantWatered, 60, PUBLIC); messageSent = false; //If message sent, and plant watered, it resets the program so that the function above will run } Particle.publish("plantStatus_percentage", String(moisture_percentage),60,PUBLIC); //Publish command for logging data and sending it to thingspeak //digitalWrite(boardLed,LOW); delay(15000); } void handShake( const char *event, const char *data){ //If the message has been sent, it sets messageSent to true messageSent = true; }
int led=D7;//led that indicates the plant needs water bool sent=false;// has the notification to water the plant been sent bool thirsty=false;//whether or not the plant needs water void setup() { pinMode(led,OUTPUT); } void loop() { Particle.subscribe("moisturePercentage",waterPlant,"3c0026001747373335333438"); while(thirsty==true) {//while the plant needs water the LED flashes and the electron listens for when the water level goes up digitalWrite(led,HIGH); delay(500); digitalWrite(led,LOW); delay(500); Particle.subscribe("plantWatered",breakloop,"3c0026001747373335333438");// checks for when the plant has been waterd. } delay(5000);// this loop every five minutes } void waterPlant( const char *event, const char*data) { Particle.publish("plantStatus","thirsty",60,PUBLIC);//sends a message to IFTTT to notify me to water my plants. sent=true; Particle.publish("handshake","sent",60,PUBLIC);// notifies the photon that the message has been sent thirsty=true; } void breakloop( const char *event, const char*data)// changes thirsty to false to break the while loop and stop the led from flashing { thirsty=false; sent=false; }