[Project] Smart Home Automation using Raspberry Pi and Arduino

Link: [Project] Smart Home Automation using Raspberry Pi and Arduino


Smart Doorbell using Raspberry Pi

About a year ago, I had to do a project titled Smart Home Automation using a Raspberry Pi and Arduino, part of the project  incorporated a doorbell but not just any doorbell but a Smart doorbell.

Why do I call it a Smart Doorbell?

A classic doorbell can be defined as a signalling device typically placed near an entry door to a building. When a visitor presses a button the bell rings inside the building, alerting the occupant to the presence of the visitor.

The smart doorbell, works in that manner however when a visitor presses the doorbell button it notifies the occupant with an images of the visitor and also sends an email, sms and push notification (to an smart device) to the occupant in case they are not able to hear the bell ringing.

If the button is pressed a pre-recorded voice notification is played for the occupant to check the door as there might be someone, this happens concurrently with an sms notification while a picture of the visitor is captured and sent to both email and push notification. Initially there was a feature to enable 2-way real-time video communication but due to network latency and high resource usage the feature was deprecated.

Click For A Demo

Comment if you need the code

See code snippets(Initial Revision): https://mmphego.wordpress.com/2015/01/11/smart-doorbell-using-rpi-with-voice-and-email-notification/

Setting up an MQTT server on Debian Jessie

Jolabs Tech Blog


Today we`re going to be setting up our own home automation server in a dedicated linux server. It’s gonna host our platform using the the Node.Js environment. The different devices around the house are going to be speaking MQTT to this server. I’ve chosen MQTT because of it’s robustness and lightweightness allowing for easy deployment on my favourite controllers: ESP8266. The esp-01, still the cheapest to this date,only sports 4mb of flash, has no trouble at all controlling a couple of relay’s for now. In the future the newer/bigger boards can be used to get more IO and function, but for now I’m going to be using the esp-01’s extensively around the house flexibly (it’s wireless…).


The idea is to have the server online 24/7, so consider a computer thats not to power-hungry; like a Raspberry Pi or a small embedded box computer. Alternatively you can boot up…

View original post 340 more words

System V init script(start-stop-daemon)

I’ve been looking for efficient ways to start at boot my NodeJS dependent applications, with inspiration from https://gist.github.com/alobato/1968852, I modified it to my own needs.

Link might interest you as well:

Copy template to /etc/init.d and rename it to something meaningful. Then edit the script and enter that name after Provides:(between ### BEGIN INIT INFO and ### END INIT INFO).

# Inspired by https://gist.github.com/alobato/1968852
# Needs Provides, Descriptions

# Provides:
# Required-Start: $all
# Required-Stop: $all
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description:
# Description:

set -e
# Application one wants to upstart
# Run as user
function daemon_run {
	mkdir -p /run/$NAME
	chown $RUN_USER:$RUN_GROUP /run/$NAME
	start-stop-daemon --start --background --quiet --chuid $RUN_USER:$RUN_GROUP --chdir /run/$NAME --pidfile $PIDFILE --make-pidfile --exec $DAEMON $DAEMON_OPTS
exec > /var/log/$NAME.log 2>&1

case "$1" in
	echo -n "Starting $NAME ... "
	echo "done."

	echo -n "Starting $NAME in silent mode ... "
	echo "done."

	echo -n "Stopping $NAME ... "
	start-stop-daemon --stop --quiet --oknodo --pidfile $PIDFILE --remove-pidfile
	echo "done."
	echo -n "Restarting $NAME ... "
	start-stop-daemon --stop --quiet --oknodo --retry 30 --pidfile $PIDFILE --remove-pidfile
	echo "done."
	echo "Usage: $0 {start|stop|restart}"
exit 1
exit 0

When done,

sudo systemctl enable 'name_of_filename'


Installing latest Node.js on Raspberry Pi B+

So, I’ve been battling with updating my node.js via apt-get, for some apparent reason seems like they’ve discontinued updates or maybe I’ve been doing it wrong all along – who knows.

But I found a way to bypass apt-get and go back to the basics.
Note: This assumes that the latest release is node-v7.4.0, else you can go to https://nodejs.org/dist/latest and get the required build.

This assumes the Raspberry Pi is running Rasbian – Jessie

# Download Node.js source Raspberry Pi Model A, B, B+ and Compute Module

wget -qO- https://nodejs.org/dist/latest/node-v7.4.0-linux-armv6l.tar.gz | tar xvz
cd node-v7.4.0*

# Raspberry Pi 2 Model B

wget https://nodejs.org/dist/latest/node-v7.4.0-linux-armv7l.tar.gz | tar xzv
cd node-v7.4.0-linux-armv7l

# and lastly
sudo cp -Rv * /usr/local/

# That's it! To check Node.js is properly installed and you have the right version, run the command:

node -v