PiPlanter 2 | Adding Youtube Upload Functionality

In order to keep things moving quickly, I’ve decided to take a shortcut when it comes to uploading timelapse videos to youtube. I’ve decided to basically create a function that passes data to youtube-upload, a command line utility for linux that can upload videos very simply.

Here’s the function:

It should remind you a lot of “TryTweet” from the main version of the PiPlanter.

 

Getting a Raspberry Pi on Worcester Polytechnic Institute (WPI) WiFi (WPA-EAP)

The following is a very specific guide and like all guides of this nature written by me it is mostly for my benefit so I can come back to it later. It is a modification of this guide written by Campus IT.  If you have any suggestions to improve anything, PLEASE shoot me an email or leave me a comment below.


I will be connecting my Raspberry Pi Model B+ running the latest build of Raspbian using the Edimax EW-7811Un WiFi dongle to this kind of network (From Campus IT):

Specifically, WPI requires 802.1x EAP-TLS certificate based authentication. This is sometimes referred to as WPA Enterprise

Having an internet connection will make doing this much much easier. In fact, if all you need to do is share your laptops WiFi with the Pi over the Ethernet port on your laptop that is quite easy (For WPI people please note that this is a violation of the networks’ acceptable use policy). For windows 8.1:

First, we will have to enable sharing our Wi-Fi through the Ethernet ports of our computer.

Open the Network and Sharing center on your computer. It is found under Control Panel->Network and Internet->Network and Sharing Center.
Next, click on “change adapter settings.”
Right click on your Wi-Fi, and select “Properties.” You will most likely need to be an administrator for this step.
Click on the “Sharing” tab.
Check the “Allow other network users to connect through this computer’s Internet connection” checkbox.
Hit OK to close this window.
Next, we will connect to the raspberry Pi over our Ethernet cable.

Open up cmd. Type “ping raspberrypi.mshome.net” into the command line. Do not use any quotes when you type in this command.
Take note of this IP address. You can connect to the Pi through Putty using that IP address.

If you’re using a fresh install, make sure you set the Pi’s internal time to the proper time using raspi-config. It’s under internationalization options.

You will then need to register the MAC address

Next we need to acquire the proper certificates.

Campus IT has already created a good tutorial for doing this found here. You’ll want two get two certificates seen here:

Move those two documents onto the Pi as well. I’m using

as the location for my certificates for the sake of this tutorial.

From there you’ll have to convert the ‘certificate.p12’ document to a .pem format with OpenSSL. OpenSSL is installed by default in Raspian. Do this with the following command:

Enter the password for the NETWORK when prompted. We now have 3 certificate files. The CA-.pem, certificate.p12 and certificate.pem all located in the /home/pi/certs directory on the pi.

Next we have to disable all the default wifi settings that come with Raspian. Do this by changing your /etc/network/interfaces file to the following:

Doing this stops the Pi from trying to use the wlan0 device at boot and will allow us to use it directly.

Now we must configure wpa_supplicants. It doesn’t really matter where you put the configuration file, but the raspberry pi places it by default here:

Edit the file to look like the following. Note that things you WILL have to change are marked with []’s. Also note that this config places all 3 certs in that directory I’ve mentioned a few times.

I found that in an example configuration of wpa_supplicant.conf specifically notes the need of a .pem file for the client cert, thus the conversion.

We’re pretty much done, all we need to do is add a few steps to the boot process to start the whole process each time the device boots. We can use crontab or /etc/rc.local (thanks Greg Tighe) to accomplish this.

With Crontab:

Add the two lines to the file:

or edit /etc/rc.local to contain:

And reboot your pi! Everything should connect and work.

Smart Shutter | Bluetooth Communication Between Android and Arduino using Processing

So, once you get processing for android all installed, if you’re like me the first thing you’ll want to do is get your phone talking with an Arduino over bluetooth. Well maybe not first thing but you get the Idea. Below is two pieces of code that I’ve used for this project. It’s very specific for this project, but it may help somebody and will likely help myself in the future so there you go.

Ardiuno Code:

Processing Code:

Let me know if you ever use this!

Smart Shutter | Installing Processing For Android (With Pictures!)

This was a horrible (!) experience. I ran in to a slew of errors from the “Android Mode” menu not showing up, to having to adjust my PATH variable. Hopefully this guide helps somebody. Most of this is taken from this guide from processing, but a lot of the errors I ran into I resolved using various forums.

First things first, download the Android SDK for an existing API.

From there, you need to install the SDK as well as some pretty specific packages using the SDK manager. [Android SDK Platform-tools], [Android 2.3.3 (API 10) > SDK Platform] and [Google USB Driver under Extras]. My setup worked once I hit “deselect all”. Note the location of the SDK.

The install of Processing is very simple. Please note that the “modes” folder inside the folder is NOT the folder you manually install modes in. Please note the location of your sketchbook folder from the preferences inside of processing.

Next, you need to download and install Java’s JDK here.

So this is where stuff started to go south. For some unknown reason, when I installed processing, “Android Mode” didn’t appear in the modes box in the top right corner.

I had to manually install AndroidMode. To do that, you must download and uncompress it into the modes folder IN your sketchbook folder.

Once you can see “Android Mode” you will need to locate the SDK.

Once I got this working, upon compiling a demo app with my phone connected resulted in errors!

You must edit the “Path” variable by adding a semicolon with the location of your JDK’s bin folder.

And there you go. Everything should be working now.

In order to connect your phone and upload your apps to it, you need to set your phone to developer mode, which is very simple. Look here for instructions.

Smart Shutter | Setting up a BlueSMiRF with Software Serial and Arduino

I was recently accepted into a beta test for MIT dealing with a prototype Arduino board and their website. I’ll create a final post showcasing the completed project, but for step by step updates check out their website here, and my personal project page here. Now on to the tutorial.


I always reset my module after I dust it off for use, jussttt in case:

Because I know I’ll need to do this again, I’ve decided to take the time writing a post explaining how to get communication going between an Arduino and a PC using serial over bluetooth in windows 8.

First thing’s first, connect to your device, as stated in the title, I’m using a BlueSMiRF Silver from Sparkfun.

Pairing is very easy. From there, upload the following code to your Arduino and connect your board as dictated by the code.

 

NOTE: IN ORDER TO USE DIFFERENT SERIAL SPEEDS, YOU WILL NEED TO MANUALLY CHANGE THE BAUD RATE USING THE DEBUG MODE IN THE BLUESMIRF.

https://learn.sparkfun.com/tutorials/using-the-bluesmirf

Then open your device manager and see how the bluetooth configuration went and how the ports were assigned:

 

For some reason, the lower COM port number is the correct one, I have no idea why. I’ll be using Putty to connect to the bluetooth COM port, the config is very simple:

<a href=”http://imgur.com/lXBc69L”><img src=”http://i.imgur.com/lXBc69L.png?1″ title=”Hosted by imgur.com” /></a>

From there, start typing in either console and it should all work!

Thanks for reading!

PiPlanter 2 | Moving again

I bought a wire rack from walmart and put the PiPlanter back inside my house. Hopefully the plants will live longer than they did last year so while I’m at college I can continue to develop on this model. Images below.

PiPlanter 2 | Solving Broken Pipe Errors [Errno 32] in Tweepy

If I haven’t mentioned it already, https://twitter.com/piplanter_bot IS the new twitter account for PiPlanter. Like last time, I’m using the tweepy library for python to handle all things twitter for the project. What I’m NOT using this time is Flickr. From a design point of view, it wasn’t worth it. It was too complicated and had too many things that could go wrong for me to continue using it. Twitter is more than capable of hosting images, and tweepy has a very simple method of passing these images to twitter. Recently I moved the whole setup indoors and mounted it all onto a shelf seen here and it came with a set of strange problems.

Long story short, what I think happened was that since I moved them to a different location, the complexity of the images increased, causing an increase in the size of the images themselves. A broken pipe error implies that the entirety of the package sent to twitter wasn’t sent, causing the tweet not to go through. I first started to suspect this problem after seeing this:

 

The graphs were going through just fine, but images were seeming to have a hard time. You can’t tell from this photo, but those tweets are hours apart as opposed to the 20 minutes they are supposed to be. Once I started having this problem, I bit the bullet and integrated logging into my project which produced this log:

Hours and hours of failed tweets due to “[Errno 32] Broken pipe”. I tried a lot of things, I figured out that it was the size of the images after seeing this:

Photos that were simple in nature had no problem being sent. After scaling the image size down, I’ve had absolutely no problem sending tweets.


If you are tweeting images with tweepy in python and getting intermediate Broken pipe errors, decrease the size of your image.
Thanks for reading.

PiPlanter 2 | Progress Update

I’m almost done with a very stable version of the Python code running the PiPlanter. There are many specific differences between this version of the python code and the version I wrote and implemented last summer, but the main one is that I tried to write functions for pretty much every task I wanted to do, and made each routine much more modular instead of one long line after line block to do each day. This took significantly longer to do (thus the lack of updates, sorry) but is much more expandable going forward. Below is the new version of the code, but by no means am I an expert programmer. The following code seems to work very well for what I want it to do.

Note the distinct lack of comments. I will put out a much more polished version of the code when it’s done. Before I move onto things like a web UI etc, I would like to do a few more things with this standalone version. The above version renders videos into time lapses, I would like to be able to upload those videos somewhere, hopefully youtube. I would also like to be able to email the log file to the user daily, which should be easier than uploading videos to youtube.

The script that renders the MySQL data into a graph is the following, it on the other hand has not changed much at all since last year and is still the best method to render graphs like I want to:

Here are some photos of the current setup, it hasn’t changed much since last time:

Thank you very much for reading.

PiPlanter 2 | New Code Version / Temporary Setup

Hello! Here are some images of the new grow setup:

and here is the working version of the code:

I’ll do a much more thorough post when the project is further along. For those playing along at home, you can see that I’ve totally re-written the code for this new version. So far, it has much less functionality but much more stability and flexibility.