Some Simple Raspberry Pi Projects

Some projects that I have implemented using a Raspberry Pi single board computer

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.

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.

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.

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.

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

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.

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.

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
No-IP dynamic DNS update client

Written by Seth Cohen on 28-May-2021