Archives for category: Raspberry PI

Things have been a little quiet as of late due to me being busy.

The various projects have been progressing nicely in the background and I’ll be getting their progress written up into blog posts as soon as time permits.

In the interim here is a quick update on where things are at:

Wireless thermostat

My Arduino YUN has arrived. This is going to be the perfect piece of equipment for completing my WiFi thermostat project. It takes away the need to worry about hooking up a separate wireless shield. I’ll just need to attach one of my touch screen shields to it and hook up a relay and thermistor and it will be ready to go.

My next wireless thermostat post will go into more detail on this.

Ethernet Thermostat

The Ethernet thermostat is almost complete. The next post on this will detail each component I used, how to set it up and will also discuss connecting it to baseboard heaters and the types of relay needed.

Thermostat controller

The Java based thermostat controller running on the Pi is coming along nicely. The next posts on this will tie in with my earlier post on parallel computing.

The controller is going to leverage Hadoop which is running on other devices in my home to process temperature data. Expect a guide to setting up Hadoop on the Raspberry Pi and also a further look at MPI for C based applications that can also leverage spare processing capacity.

There will also be code uploaded to BitBucket which you can download and use as a base for your projects.

 

Upcoming reviews

I have some upcoming reviews on the Arduino YUN, the Pebble smart watch and Mint floor sweeper.

 

 

Introduction

In a previous post I touched on the fact we would be examining HPC (High Performance Computing), parallel processing and Hadoop in relation to Home Automation.

As our home network grows with multiple devices, tablets, microprocessors and similar running on it we reach a point where we have many CPU’s which are often sitting dormant. Being able to leverage this spare computational power for working on other tasks in our home poses an interesting challenge.

One method we can use in the case of multiple Raspberry Pi units is to use applications that run using MPI (Message Passing Interface). The MPI provides us with a set of base routines and functionality for communicating between multiple CPU’s.

Originally written with C and Fortran in mind, there are many libraries for languages including Python and Java that allow us to implement MPI based applications.

MPI has eight basic concepts, these are:

Communicator – An object that connects groups of processes in the MPI session.

Point-to-point basics – Allows process to process communication

Collective basics – Performs communication amongst all processes in a process group

Derived datatypes – Used for dealing with datatypes in MPI applications

One-sided communication - A set of operations used for dealing with scenarios where synchronization would be an inconvenience for example the manipulation of matrices and calculating matrix products.

Collective extensions –  For example non-blocking collective operations (A combination of non-blocking point-to-point functionality with collective basics) which can help reduce the over-head on communications.

Dynamic process management –  The ability for an MPI process to help with the creation of new processes or establish communication between MPI processes.

MPI-IO – The abstraction of the I/O management on parallel systems to the MPI

These eight concepts can help us to decide what functionality we wish to use in our home automation applications that implement MPI.

To give an example of how this may be useful in the home let’s look at the following example.

Redundant media unit and thermostat controller

In this scenario we have a thermostat controller running on a Raspberry Pi that calculates various temperature data and adjusts the thermostats, blinds and similar as needed. This thermostat controller for example may also use weather data to decide whether a device that acts as a damp/water sensor should be switched on or off based upon predicted rain fall levels.

Over time as we store more historical data and get weather streams via the web we have an ever increasing amount of data to work with. More data should hopefully provide more precision. However working with more data also means we are crunching more numbers and thus placing an ever increasing burden on the CPU of the Raspberry Pi.

We can optimize our code and database in order to help tackle performance issues, however this will only get us so far.

Now let’s imagine we have a second Raspberry Pi running XMBC in our home, which we use on occasions to watch streamed TV from the web. This Raspberry Pi may be sitting idle for much of the day, so it would be great if we could leverage it’s CPU to crunch our weather data while it is sitting dormant.

This is where using MPI can help. A program written using MPI can check if the media unit is being used and if not set its CPU to work on processing temperature data.

Using the eight basic concepts of MPI we can write an application that will handle the communication between the thermostat controller and XMBC RPi and pass calculations back and forth.

This model also allows us to add further devices to our network that can be used by the thermostat controller for parallel processing.

Conclusion

Our thermostat controller is being written in Java and will run on Tomcat, therefore in the next post on MPI we will look at its Java implementation and how we can use this in our code.

We will explore the techniques used for writing distributed applications and look at a scalable model that allows for the addition of extra devices to the network.

Introduction

We are now going to look at the first step of building the controller system for our home automation system using the Raspberry Pi as the “brains”.

In order to host web applications, write data to our temperature database and host a method for serving the data stored in the DB via http we are going to need to install a number of tools.

For calculating the temperature and communicating with the thermostats we are going to use Java and setup a Java based web server. Following from this we will once again look at HTSQL and setup an HTSQL server for reading the temperature data from our database. We will also in later posts consider using Hadoop for a scalable parallel based controller capable of handling lots of data.

Having built the controller, we will then need to re-visit the post on Postgres and build out our database.

In part one of this post we will look at installing Java Apache Tomcat.

Setting up Apache Tomcat

Apache Tomcat provides us with a web server that can run Java based applications, distributed through WAR file.

Before we install the WAR file we should setup a new user on our Raspberry Pi. Tomcat will then run under this user, and we can lock down the user so it can only perform certain tasks.

To add a user run the following command from the RPi shell:

useradd controller
passwd <password>

This will create a new user on the system. Under the home directory you will see a list of the user on your RPi. New directories can be added here using the mkdir command. You should create a home directory for your new user controller

mkdir controller

Ownership of the directory can be changed using the chown command, for example:

chown controller:users /home/controller

Now we have a user who will be used for running our controller code and servers under.

Our next step is to install Java on the Raspberry Pi.

Installing Java

We will start by installing the latest version of Java onto our Raspberry Pi. The first command we should run is to remove the existing version installed. Keeping your version of Java up-to-date is important as security patches are released that address underlying security flaws.

To remove your existing Java version run the following from the command line:

sudo apt-get purge openjdk*

Once this is complete we can run the following commands to install Java

 sudo apt-get update
 sudo apt-get install openjdk-7-jdk

In the above command we have installed the Java Development Kit version 7. You should install the latest version, a list can be found at the following URL:

http://www.oracle.com/technetwork/java/javase/downloads/index.html

Once you have installed Java run the clean up command:

sudo apt-get clean

You now have the latest version of Java running on your Raspberry Pi. If you need a basic guide to the language you can read IBM’s introduction guide:

http://www.ibm.com/developerworks/java/tutorials/j-introtojava1/index.html

Installing Tomcat

We now need to install the Tomcat web server onto the Raspberry Pi. You can read more on Tomcat at the Apache Tomcat website at the link below:

http://tomcat.apache.org/

Let’s start by downloading the tar.gz for the web server.

From the command line on your RPi run the following command, make sure you are located in the controller directory under /home:

wget http://mirror.cogentco.com/pub/apache/tomcat/tomcat-7/v7.0.39/bin/apache-tomcat-7.0.39.tar.gz

As with installing Java you should replace the version number above with the latest version.

Once wget has finished running you should be find a .tar.gz file located in the controller directory.

We can untar/unzip the file as follows:

tar xzf apache-tomcat-7.0.39.tar.gz

Now change directory into the conf folder located in the new apache tomcat folder created when untar/unzipping

cd apache-tomcat-7.0.39/conf

We can now add our controller user to the configuration so they can start and stop the server.

Open the tomcat-users.xml and add the following:

<user username="controller" password="raspberry" roles="manager-gui"/>

Save the file. We can now test that Tomcat runs.

Navigate to the bin directory e.g.

cd ../bin

then run

sudo sh startup.sh

This will start your Tomcat server.

Tomcat by default runs on port 8080 of the localhost. In the next post we will take a look at the management console and explain how it works and look at further configuration of our Tomcat server.

Just a quick update.

1.) Exams are done, so plenty of time to work on various projects.

2.) In the coming weeks I’ll be doing an interview with Marco of Open Home Automation.

3.) Wrapping up the controller module on the Raspberry Pi

4.) Completing the Ethernet and wireless thermostats

5.) A review of the Mint robot sweeper

6.) A closer look at Nest

7.) Baseboard heaters and wireless thermostats

8.) HPC with the Raspberry Pi

 

Raspbmc Upgrade

For those of you who have been using Raspbmc you will be aware that was an update on the 22nd of Feb.

A lot of people seem to have had problems with the update starting, then hanging with a screen that says:

“Relax CMBG will restart shortly”

I have attached a screen shot of this below:

 

Raspbmc

 

I fixed the problem using the following steps.

Note you will need to also download any 3rd party plugins again or copy the zip files if your Raspberry Pi if you still have them on there.

Start by backing up your Raspbmc settings. You can do this by shelling into your Raspberry Pi and taring the settings.

tar -czf xbmc-backup.tar.gz .xbmc

Copy the tar file to another machine. For example you can open a fresh shell into the Raspberry Pi and secure copy (scp) the file to your local machine

scp <user>@<ip address>:/path/to/backup .

Next head over to the Raspbmc website’s download page.

http://www.raspbmc.com/download/

You can find the instructions here to re-install Raspbmc.

Once the instillation is complete, copy your tar file containing the settings back up to the Raspberry  Pi.

Running the following command will then untar the settings and re-load them.

sudo initctl stop xbmc && tar -xzf xbmc-backup.tar.gz && sudo initctl start xbmc

Finally you will need to setup your 3rd party plugins again.

Raspbmc book

Sam Nazarko the creator of Raspbmc also has a book out on the subject, you can check it out on the Packt Publishing website.

I slightly belated happy Birthday to the Raspberry Pi, which turned one year old on Feb the 29th.

You can read more over at the Raspberry Pi foundations website:

http://www.raspberrypi.org/archives/3375

 

 

So the book has finally been published!

Raspberry Pi Home Automation with Arduino - book cover

Raspberry Pi Home Automation with Arduino

The title is: Raspberry Pi Home Automation with Arduino and it is available from Packt publishing at the following URL:

http://www.packtpub.com/raspberry-pi-home-automation-with-arduino/book

 

A bit about the book

Raspberry Pi Home Automation with Arduino is a basic introductory guide for using your Raspberry Pi technology and the Arduino Open Source framework, for building small home automation projects. The book will walk you through the basics of getting setup, trying out some basic electronic components such as photo-resistors and DC motors and building some introductory projects.

I’ve tried to keep the book accessible to beginners and steered clear of anything too complex. Once you are comfortable with the material in the book you’ll be able to move onto the more challenging projects.

Some of the topics covered in the book include:

  • Install an operating system for your Raspberry Pi
  • Set up the Raspberry Pi and Arduino bridge shield
  • Learn how to work with electronic components to build small circuits
  • Develop applications that interact with your circuits
  • Use thermistors and photoresistors to monitor and control your surroundings
  • Control your own mains power with a relay shield and even connect a motor to your Raspberry Pi

Cooking Hacks shield 

Due to delays in the Gertboard shipping, when originally writing the book I found an excellent replacement for this component. This is the Cooking Hacks Raspberry Pi to Arduino connection bridge shield, which can be found here.

As you may have seen in some of my earlier posts I have given some video examples on the bridge shield being used to connect a Arduino Relay and Arduino Motor shield to the Raspberry Pi.

I would recommend checking this component out if you plan to do any home automation projects with your Raspberry Pi and want to re-use existing Arduino shields.

Wrap-up

If you have any question or queries feel free to post them here. If you spot any Errata (yes the dreaded typo as well) you can send through a correction form here.

Just a quick update on the book. It is currently going through the pre-final proof reading stage where hopefully we will weed out any typos!

Once I have a confirmed release date I will include those details here – we are looking at around the end of February for it hitting the stores I would guess though.

For anyone that buys it and has comments or questions you can use this blog as a medium to contact me.

 

I spent some time setting up the Gertboard. This should make an interesting expansion to the home media center.

Here we can see the board under construction:

 

Gertboard

Gertboard

And here it is setup ready to be plugged into the RPi.

Setting up the Gertboard

Setting up the Gertboard

My next task will to find a good case for the Gertboard or to use the 3D printer to create one.

 

 

 

Introduction

Yesterday the snow hit so I decided to try to knock off some projects that had been on the back-burner.  Two of these were related to one another, the first being setting up my spare wireless router as a client bridge and the second setting up a Raspberry Pi with raspbmc.

Completing these two projects would allow me to create a Media Center for television and music.

Wireless router – client bridged mode

I had spent several days deciding  whether to use the wireless router I had spare to create a second network at home (not connected to the Internet), or to use it in client bridged mode.

In the end I opted for client bridged mode. The wireless router has a number of Ethernet ports located on it and would be perfect to place next to my TV as this is nowhere near my existing Ethernet switch. With this in place I could then run a short Ethernet cable from my Raspberry Pi into the wireless router and then stream TV over the wireless connection back through the Ethernet connection to the RPi and then over HDMI to the TV.

This image from the dd-wrt website shows an example of a network setup using two wireless routers one in client bridged mode:

Client_Bridge.jpg

Client Bridge example from dd-wrt.com

Setting up the wireless router was fairly straight forward. I used a Cisco Linksys E4200 router and installed the dd-wrt software onto this.

Linksys E4200

Linksys E4200

You can check your wireless router to see if it is supported at the following link:

http://www.dd-wrt.com/site/support/router-database

Once you have found your router download the firmware and follow the instructions on the dd-wrt site. There are a number of warnings on there to help you avoid ‘bricking’ (screwing up the router so it as much use as a brick) your router.

I would recommend following these as it will cause you less pain in the long run.

Once you have the router setup, follow these steps to set up the router in client bridged mode:

http://www.dd-wrt.com/wiki/index.php/Client_Bridged

If everything goes well you will now have a second wireless router connected to your primary wireless router and can then use it with the Raspberry Pi.

Raspbmc

Raspbmc is a version of the Debian Linux distro specially compiled for the Raspberry Pi to turn your Pi into a XBMC media center.

Installing it is fairly straight forward. Format  an SD card and then follow the steps located here depending on what machine you are using to format the card.

Once you have the SD card ready to go you can hook up your RPi to the wireless router, TV and power and get things started.

Raspberry Pi

Raspberry Pi

Note: If you have problems with the HDMI cable not displaying a picture, try the steps at this link:

http://elinux.org/R-Pi_Troubleshooting#Red_power_LED_is_on.2C_green_LED_does_not_flash.2C_nothing_on_display

When the Pi boots up it will run through the Raspbmc installation process.

Raspbmc splash screen after installing

Raspbmc splash screen after installing

Once the installation is complete you will now have the XMBC media center ready to start using.

Raspbmc

Raspbmc

Accessing the IP# of your Raspberry Pi via a web browser on port 80 will give you access to the ‘remote control’

e.g.

http://192.168.1.80:80

From here you can navigate through the menus on your TV and access content.

A wide variety of content is available on Raspbmc ranging from BBC iPlayer through to Hulu.

Hulu

Hulu

You can find instructions on installing the various TV networks software from the UK, US, Canada, France etc. at these following links:

General plugins:

http://wiki.xbmc.org/index.php?title=Unofficial_add-on_repositories

UK TV specific:

http://djb31st.co.uk/blog/catch-up-tv-on-raspberry-pi-raspbmc-bbc-iplayer/

Some content will not work in your area due to restrictions, for example BBC iPlayer TV content is not available outside of an UK IP address range (however radio is).

Tunlr.net seems to be a popular choice for circumnavigating this – Disclaimer: I’m not sure what the legalities of this are so you use these services at your own risk, if you don’t know it is probably best to avoid it.

Conclusion

So there we have it, a simple XMBC media center running on your Raspberry Pi that you can use to stream TV, radio and other media from.

You can read more about XMBC’s features and quick start guide at the following URL:

http://wiki.xbmc.org/index.php?title=XBMC_Quick_Start_Guide

I have  Gertboard ready to build for this Pi as well, so I will be looking at what I can use this for in my media center.

Enjoy!

Follow

Get every new post delivered to your Inbox.