It all starts with installing Windows 10 IoT on a suitable device. I used a Raspberry Pi 2 (Model B) and installed the creators update of Windows 10 IoT. You should really get the dashboard from Microsoft: https://developer.microsoft.com/en-us/windows/iot/downloads

snip_20170504105939

It is really easy to get Windows 10 IoT on your device. Here is a small manual https://developer.microsoft.com/en-us/windows/iot/docs/iotdashboard

snip_20170504111010

If you have your Visual Studio 2017 configured, you can easy deploy to it.

The hardware

I bought stuff from aliexpress. I had no rush, so saved a lot of money Smile

I was inspired by this article https://www.modmypi.com/blog/raspberry-pi-plant-pot-moisture-sensor-with-email-notification-tutorial but that referenced to a moisture sensor for 4 gbp and shipping was also 4 gbp. So just the sensor could cost me 9,40 eur. Which makes it less fun, because the whole idea of a raspberry pi is that you can make an internet of things device with little costs.

 

I spend only 42 cent on the sensor and bought some male/female, male/male, female/female jumper cables too and even an hdmi to dvi connector so I could connect an external monitor, but never used it.

Ali Url snip_20170504112536

€ 0,42

Ali Url snip_20170504112647

€ 2,19

Ali Url snip_20170504113017

€ 1,14

(optional)

So I had to spend € 2,61 euro including shipping to get the parts for my Pi 2.

Hardware wiring

Connect the probe to the sensor with two wires. Doesn’t matter which goes where.

Connect the sensor to the GPIO

VCC 3v3 Pin 1
GND GND Pin 9
D0 GPIO 17 Pin 11

 

WP_20170406_17_01_50_Pro

WP_20170406_17_01_40_Pro

WP_20170406_17_01_26_Pro

WP_20170406_17_01_13_Pro

this is a good page for gpio pins: http://www.raspberrypi-spy.co.uk/2012/06/simple-guide-to-the-rpi-gpio-header-and-pins/

snip_20170504134958

Software

I hit a strange bug with the UWP but fixed it, thanks to stack overflow, by manual creating a project.json file. As said, I was inspired by this article but that is coded in Python. My preference language is still C# and I wanted to try win 10 iot. So I rewrote this python code to C# and got this: 

 

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();
        }
    }
}

I used the nuget "lightbuzz-smtp" to send mail https://github.com/LightBuzz/SMTP-WinRT

Have fun with Windows 10 IoT raspberries etc.

Pin on pinterest Plus on Googleplus Post on LinkedIn
0 Comments

If you do not yet have a solution to watch pictures and movies on your TV, you really should buy a Raspberry Pi. It is around 40 euro and needs an SD card, USB to micro USB and HDMI cable. And last but not least some free Linux distribution with the famous XBMC. I have blogged before about RaspBMC but I have moved to Xbian because there are more developers involved and some are Dutch. You can reference network locations on your small raspberry xbmc to list the movies inside them. There are several solutions to make that reference. One is samba. This works great, but samba has some protocol overhead. NFS is an other option and is more ‘lightweight’. 

image

So download the windows installer for Xbian .  Or check this page for other operating system options. Put it on your SD. put the SD in your pi and power up and make sure it is connected to the LAN.

SSH (with putty for instance) to the pi. I have added the mac address in the router for a static IP. so I know how to connect with “ssh xbian@ipadres-of-pi” the default password is raspberry.

exit the menu and create local directories for the mounting points for your TV shows, movies, pictures and music.

I have made a dir named public on the root. which require root access so I had to sudo it.

xbian@xbian /public $ sudo mkdir Moives
xbian@xbian /public $ sudo mkdir Music
xbian@xbian /public $ sudo mkdir Pictures
xbian@xbian /public $ sudo mkdir TV

Next is to mount the network share and make it a permanent mount. So edit the /etc/fstab as root in your favorite texteditor. I used nano.

 

sudo nano /etc/fstab

 

The format to mount is: ip of network device:/path to share /local path  nfs so for my CH3Snas of conceptronic (which uses funplug) is:

192.168.1.133:/mnt/HD_a2/shared/Movies /public/Movies nfs rsize=8192,wsize=8192,timeo=14,intr 0 0
192.168.1.133:/mnt/HD_a2/shared/Music /public/Music nfs rsize=8192,wsize=8192,timeo=14,intr 0 0
192.168.1.133:/mnt/HD_a2/shared/Pictures /public/Pictures nfs rsize=8192,wsize=8192,timeo=14,intr 0 0
192.168.1.133:/mnt/HD_a2/shared/TV\040Shows /public/TV nfs rsize=8192,wsize=8192,timeo=14,intr 0 0

 

After saving the file and rebooting the pi, it will be mounted. The next step is to configure the XBMC to see that the movies are on the local /public/movies folder.

 

Good luck and have fun with the Raspberry pi and Xbian (and XBMC)

Pin on pinterest Plus on Googleplus Post on LinkedIn
2 Comments

A lot of (IT)people have heard of the raspberry pi. It is a tiny cheap computer. There are two models, model A and B. The difference between model A and B is the network (lan) connection.

Order a Raspberry pi

I have bought a model B at http://export.farnell.com/rp/order/

The raspberry pi was ordered at 23th of August and it arrived in the Netherlands at 11th of September. So that’s less then the 3 weeks that element14 mentions on the website. A fast SD card is recommended. So I have bought an 8GB Transcend class 10 card (for only 8 euro’s).

As programmer you should have an HDMI cable available and network connection and micro-usb power supply.

Make a HTPC from your Raspberry

In 2003 there was a project started to make an Xbox act as HTPC. This project was named XBMC (X-Box Media Center). The software is still available for the X-Box, but also for various number of other platforms.

As you might know, you can install various Linux distributions on your raspberry. A lot of them are listed on the official raspberry pi website. There is even a special distro for XBMC on your Raspberry pi called RaspBmc. It is super easy to install (when you run windows). Insert your (fast) SD card and download the Windows RaspBmc installer. Unzip and hit install. When you are done, put the SD in your pi and connect the LAN, HDMI and power up! It might take a while, so grab some coffee. If if fails downloading the updates, remove the power and try again after a few seconds. It should look like this after 30 minutes:

http://www.xbmcfreak.nl/wp-content/uploads/2011/05/confluence_hor.jpg

Remotes

To work with it without usb keyboards or mice, you need a remote. Of course you can get a real remote. Some are supported out of the box. But it is now 2012 and everybody has a tablet and/or smartphone! So I downloaded the official XBMC remote for Android devices.

Airplay support

When you have your remote, you can enable Airplay support, so that you can send pictures and videos from your iPad/iPhone to the RaspBmc. You can enable it under

System –> Network –> “Allow XBMC to receive Airplay content”

Responsive UI

To make the user interface of XBMC more responsive, you can switch the skin to a more lightweight skin. The default skin is confluence

But for a system with limited resources like the raspberry pi, it’s better to move to Quartz.

So now you have a cheap good solution to add Airplay to your TV and play all kinds of files stored on the LAN.

The next step is to add DVR/PVR support and live TV. I can now use airplay from my iPad, so that’s great! Get yourself a Raspberry pi now!

Have fun with your Raspberry Pi!

p.s. the url for the official iOs XBMC remote.

Pin on pinterest Plus on Googleplus Post on LinkedIn