Things used in this project

Hardware components:
R8326274 01
Raspberry Pi 2 Model B
×1
Male/Male Jumper Wires
×1
moisture sensor
×1
Software apps and online services:
10
Microsoft Windows 10 IoT Core

Schematics

wiring
wiring: VCC -> 3v3 (Pin 1 on gpio)
GND -> GND (Pin 9 on gpio)
D0 -> GPIO 17 (Pin 11 on gpio)
35941a45 a8d7 4131 8ec8 d12808c076b1 jkimhnjg1i

Code

Code snippet #1C#
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net.Http;
using Windows.ApplicationModel.Background;
using Windows.Devices.Gpio;
using Windows.UI.Core;
using System.ServiceModel;
using LightBuzz.SMTP;
using Windows.ApplicationModel.Email;

namespace BackgroundApplication1
{
    public sealed class StartupTask : IBackgroundTask
    {
        private const int SENSOR_PIN = 17;
        private GpioPin pinSensor;
        private BackgroundTaskDeferral deferral;

        private const string SMTP_SERVER    = "smtp-mail.outlook.com";
        private const string STMP_USER      = "YOURPLANTSADDRESSHERE@hotmail.com";
        private const string SMTP_PASSWORD  = "YOURPASSWORDHERE";
        private const int    SMTP_PORT      = 587;
        private const bool   SMTP_SSL       = false;

        private const string MAIL_RECIPIENT = "iwillwatertheplants@hotmail.com";

        public void Run(IBackgroundTaskInstance taskInstance)
        {
            deferral = taskInstance.GetDeferral();

            taskInstance.Canceled += TaskInstance_Canceled;

            var gpio = GpioController.GetDefault();

            if (gpio != null)
            {
                pinSensor = gpio.OpenPin(SENSOR_PIN);

                var r = pinSensor.Read();

                pinSensor.SetDriveMode(GpioPinDriveMode.Input);

                var dm = pinSensor.GetDriveMode();

                pinSensor.DebounceTimeout = TimeSpan.FromMilliseconds(50);

                pinSensor.ValueChanged += PinIn_ValueChanged;
            }
        }

        private void PinIn_ValueChanged(GpioPin sender, GpioPinValueChangedEventArgs args)
        {
            if (pinSensor.Read() == GpioPinValue.High)
                SendMail("Thirsty", "Plant needs water");
            else
                SendMail("I am good", "Plant is fine again");
        }

        private async void SendMail(string subject, string body)
        {
            using (SmtpClient client = new SmtpClient(SMTP_SERVER, SMTP_PORT, SMTP_SSL, STMP_USER, SMTP_PASSWORD))
            {
                EmailMessage emailMessage = new EmailMessage();

                emailMessage.To.Add(new EmailRecipient(MAIL_RECIPIENT));
                emailMessage.Subject = subject;
                emailMessage.Body = body;

                await client.SendMailAsync(emailMessage);
            }
        }

        private void TaskInstance_Canceled(IBackgroundTaskInstance sender, BackgroundTaskCancellationReason reason)
        {
            pinSensor.Dispose();
        }
    }
}
Github
https://github.com/modmypi/Moisture-Sensor/blob/master/moisture.py
Github
https://github.com/LightBuzz/SMTP-WinRT

Credits

6dec5eb240c49d979542d7cef64e9a8d
JP Hellemons

c# coder

Contact

Replications

Did you replicate this project? Share it!

I made one

Love this project? Think it could be improved? Tell us what you think!

Give feedback

Comments

Similar projects you might like

Getting Started with BBC Micro:Bit
Easy
  • 289
  • 8

Full instructions

This tutorial will show you the basics to get started with BBC micro bit.

Windows 10 IoT Core - Reading Heart Rate Pulses
Easy
  • 839
  • 8

Full instructions

In this short blog post, I will show you how to connect a Heart Rate Pulse Sensor to you Raspberry Pi running Windows 10 IoT Core.

A LoRaWAN "The Things Network" Gateway for Windows IoT Core
Easy
  • 2,046
  • 14

Full instructions

Build your own LoRaWAN "The Things Network" packet-forwarding gateway on Windows 10 IoT Core in native .NET code.

Communicating with OBD-2 (On-Board Diagnostics) Systems
Easy
  • 570
  • 6

Protip

Monitoring Vehicle Speed and Engine RPM using ELM327 USB Car Diagnostic Tool and DragonBoard (or Raspberry Pi).

Data visualization in Power BI with BME280 + Raspberry Pi
Easy
  • 694
  • 11

Full instructions

You learn how to visualize real-time sensor data (BME280 + Pi) that your Azure IoT hub receives by Power BI.

Using WiFi Communication (UDP Protocol) - Example 1
Easy
  • 441
  • 5

Protip

Illustrating the use of WiFi communication (UDP protocol) through examples with DragonBoard and Raspberry Pi 3.

Add projectSign up / Login