The Raspberry Pi is a single board computer that was originally created
as an inexpensive computer science learning tool. I have owned several of
these devices that I have used for a number of projects and experiments.
Most of these projects are not my original ideas, but I thought some
people might find it informative to read about some ways this inexpensive
computer can be utilized. This article is just a list and short
description of the projects I have done. Some research on the Internet
should provide more detailed information on how to actually implement any
of these projects.
Weather Station Server
In 2007 I got hooked on the idea of running a personal weather station
at my home. After some research I assembled a weather station using a
combination of commercial sensors, kits, and some home brewed parts. I
also developed software to communicate with the weather station, store the
data in a database, compile statistics, and update a web site I created to
display the weather data. I went through several hand me down and
discarded computers to run my weather software until I learned about the
Raspberry Pi. It appeared to be a perfect fit for my needs, small, low
power, and capable of running a Linux derived operating system. So in
March of 2014 I purchased a Raspberry Pi Model B, added an external hard
drive, and moved my weather station software to a Raspberry Pi. It has
been running continually on the same Raspberry Pi since then.
Clopper Mill Weather
Database Server (PostgreSQL)
One feature of my weather station software is that it saves the raw data
from the weather station hardware in an SQL database. I chose to use
PostgreSQL as the database server and run that on the same Raspberry PI
Model B I am using for my weather station software. Since this model of
the Raspberry Pi is one of the earlier models it is not up to the task of
calculating statistics that require traversing the volume of data the
weather station generates. A newer model Raspberry PI is most likely up to
the task, so I may eventually choose to upgrade to one of the newer and
more capable models.
PostgreSQL
Home Automation Server (OpenHAB)
Another of my hobbies is experimenting with home automation. It started
out with some X10 lighting with a simple controller and then expanded from
there. In addtion to the lights and motion sensors, I now have integrated
Z-Wave and Zigbee controllers, ceiling fans, a smart thermostat, Z-Wave
door lock, Kodi media center, and Amazon Echo devices into my system. To
control all of these devices I needed a software package that can
integrate and control all of these devices. While there are more than one
choice of software packages, I chose to use OpenHAB. I run this software
on a Raspberry Pi 3 Model B, along with all of the other projects listed
here except the weather station and database servers.
OpenHAB
Robocall Blocking (NCID)
I was searching for a way to block unwanted telephone calls and found
NCID or Network Caller ID. The software's original purpose was to share
caller ID information on a LAN. However it also had the capability of
pattern matching against the caller ID information using regular
expressions and executing commands, such as hanging up on the call. I had
an old modem hanging around that was capable of receiving caller ID data
so I installed NCID on my shared Raspberry Pi 3 Model B and connected the
modem to give it a try. I use it to screen calls using a combination of
whitelists and blacklists, as well as pop up call alerts on my laptop
computer and Kodi media center.
NCID
Network Monitoring (Nagios)
My home network is probably a bit more complex than your average home
network. I have a dedicated firewall that runs several services, three
MOCA bridges, a dedicated NAS server, several managed switches, a home
theater PC, my weather station server, the Raspberry PI running all of the
projects listed here, and several hosted web sites on the Internet. While
searching for a solution for monitoring the health of all of these servers
and the services running on them I discovered Nagios. Nagios is a network
monitoring solution that has a free version that will run on a Raspberry
Pi. I currently use it to monitor 47 services running across 17 different
hosts. Nagios sends me email notifications when it detects issues with any
of these services. I highly recommend this software package for network
monitoring.
Nagios
Email server (Exim)
Several of my software packages and servers either require or have the
ability to send emails. I had previously consolidated email access for all
of these servers to my firewall where I ran an email server that could
filter any email traffic being sent to and from the Internet. When I
upgraded my firewall the newer software retained some of the email
filtering capabilities but no longer included the email server (is that
really an upgrade or a downgrade?). As an experiment I setup Exim on my
Raspberry Pi and used that as my consolidated email server. All of my IOT
apps and services use this as their email server. My firewall still
filters all the mail processed by Exim. I must caution anybody
experimenting with running an email server that it is a security concern
as it can be an easy target for abuse if the server is misconfigured
and/or subsequently compromised. Use this with a great deal of caution
Exim
IP Camera Server
As a part of my weather station I have an IP camera for remote visual
monitoring of the current weather conditions at my home. I didn't want to
provide direct access to the camera hardware, so I setup the nginx web
server to act as a proxy. This permitted me to allow external access
without exposing the camera or its' login credentials directly the
Internet. Since nginx is a full web server you could also create a web
site on a Raspberry Pi for home use or development.
Nginx
Gateway Service for Amazon Alexa and IP Camera
I wanted to be able to view my IP cameras on my Amazon Echo.
Unfortunately, the cameras I own do not integrate directly with the Amazon
Alexa service. Monocle is a software service that provides that type of
integration. In order for it to work with the more recent Echo versions
you need to run a small gateway service on your local network. I chose to
run this gateway on my Raspberry Pi. Now I can ask Alexa to show me the IP
cameras and see them displayed on the Echo screen.
Monocle
DDNS Updater
I use a free Dynamic DNS service to allow accessing my home server
through the Internet. Since my server's external IP address is assigned by
my ISP using DHCP it can periodically change. In order to keep my DDNS
provider updated I run a small daemon application on my Raspberry Pi that
will update the dynamic DNS provider when my external IP address changes.
You will need to find the update client that works with your DNS provider.
I use noip.com.
No-IP dynamic DNS update client