Best Raspberry Pi home automation tutorial: Web based
The Internet Of Things is the most trending technology today that stands alongside wearables and robotics. It is a very simple concept where devices in our home or wherever they are , have the capability to communicate with each other via the internet.Usually sensors are used with this technology to pass data to the internet. You can imagine a sensor installed in your garden which uploads data like temperature, humidity, soil purity ,etc to the internet, and this data will be visible to you from anywhere around the world.Or imagine home automation systems connected to the net , which can be used to control appliances in your home like lights, door locks, air conditioning, etc through a web interface or smartphone application. A lot of technologies are being developed around this concept such as independent light-weight IoT networks, protocols for passing data,etc. Here, I will show you how you can get started on making a raspberry pi home automation system that is web based using normal HTTP protocols.You will be able to control any appliance in your home from anywhere around the world when your done with this Raspberry Pi home automation tutorial.
What are the stuff required to do this project?
- Raspberry Pi model B with memory card preloaded with an OS.
- Bc547 Transistor.
- 5V SPDT relay.
- 1N4001 diode.
- Solder dot prototyping board.
- 9V battery
- (Optional) WiFi dongle : Edimax EW 7811UN.
- USB keyboard.
- HDMI monitor.
Software (Programming languages and OS involved):
So how does it work?
You can consider the whole system to be composed of two parts: Server and Client. Here, the server is the web interface consisting of buttons and UI (User Interface) that will allow you to turn ON/OFF a device.It consists of PHP files, Html files and a .txt file (to store data).The server usually stores information regarding the button press on the page (ON/OFF) on a .txt file.An example of this UI is : DIY Hacking IoT Implementation. This is a simple Html file called main.html ,consisting of two buttons.The clicking of the buttons will trigger the execution of a PHP file called button.php. This program serves as an API (Application Programming Interface) to store data on to a text file called buttonStatus.txt.The data is a string : “ON”, if ON button is clicked and “OFF”, if OFF button is clicked.Thus the current button press state is recorded in the text file : buttonStatus.txt.
The client side consists of a Raspberry Pi with a relay circuit connected to its GPIO pin.The pi runs a python program which is used to ‘Post’ a url link using urllib2.That is, the pi constantly reads the contents of a url link. Here, the url link is another PHP file called buttonStatus.php. This PHP file serves as an API to read the contents of the text file buttonStatus.txt.After reading the data, the python program checks if the string obtained is “ON” / “OFF” based on which it switches ON/OFF the relay respectively via its GPIO pin.
Raspberry Pi Home Automation system
Step 1: Preparing the html, php files
Here, the server side of the system has to be set up. If you are having your own domain, you can use the file manager service to drop these files into your server and can be used to control your IoT systems from anywhere around the world. The files to be put in your server are : main.html , button.php , buttonStatus.php and buttonStatus.txt , download them from here : DIY Hacking – Raspberry Pi home automation system and extract it. The program raspbi.py is the python program which is to be copied to your raspberry pi.If you are new to html and php , don’t worry. This project will need only a basic understanding of the two languages, spending some time on a few tutorials :HTML for beginners , PHP for beginners and reading the code would be sufficient. The html file consists of a basic UI with two buttons. On button press, it triggers a PHP program which writes a string to a .txt file depending on the button pressed.The .txt file stores information of the last button state.
However, if you don’t have a domain, you can simulate a domain in your local network or wifi using a service called xampp. It is very simple, the instructions for using it are here : Xampp Web Server Emulator Windows and Xampp Web Server Emulator Linux. Using xampp you can use your pc as a local web server. However, the IoT systems gets confined to a control range limited to your home wifi network. Drop the html, php and .txt files into the /htdocs/xampp directory.
Step 2: Setting up the relay circuit for the Raspberry Pi home automation system
A small relay circuit is to be made , to switch an appliance ON/OFF.It consists of a BC547 transistor, which acts like a switch.The transistor triggers the relay when it receives a voltage at its base from the GPIO pin of raspberry pi.A 1N4001 diode is used to protect the transistor from reverse voltages created in the relay coil. The circuit can be powered either using the 5V supply from the raspberry pi or using an external battery.Use the schematic and pinout diagram below to make the connections for the raspberry pi home automation system :
Step 3: Setting up the Raspberry Pi
If you have a brand new raspberry pi and are looking for instructions to load the OS into the SD card please follow this tutorial: Installing the OS for raspberry pi.The default OS used with the pi is the raspbian.To use the GUI for pi, use the command “startx” in the terminal. You can use an Edimax wifi dongle for wireless connectivity, use the wifi config application in the desktop of your pi to scan and connect to the wifi network.The raspberry pi is used to continually run a python program called raspbi.py , copy this file to your pi. Before executing this file , open the file using “nano raspbi.py” and edit the line that says : “response=urllib2.urlopen(‘https://diyhacking.com/projects/IOTautomation/buttonStatus.php’)” by replacing the link within ‘ ‘ , by your own link generated either through xampp or your own domain.On using the command “sudo python raspbi.py”, it will initiate the program.
You can use the raspberry pi without a monitor by using ssh. SSH (Secure Shell) can be used to control the pi remotely from a pc in the same home network, if you know the ip address of your pi. Use “ifconfig” command on your pi to find the ip address. Use “sudo /etc/init.d/ssh start” to initiate the ssh service.Then, from a remote pc using putty software (for windows) , open the terminal and enter the command “sudo ssh ipaddress -l pi” , “ipaddress” is replaced with the actual ip address you obtained for the pi in the range 192.168.1.1 – 192.168.1.254.
Connect the relay circuit to the raspberry pi. You need to connect GPIO pin no : 5 and 6 (GND) to the circuit as in the schematic. Please note: Raspberry pi uses GPIO pins 5 and 6 to get into safe mode by shorting them together. Hence, please use any other GPIO other than 5 by editing the python program, to prevent booting into the safe mode. The video showing the raspberry pi home automation system in action:
This system can be modified to control anything in your home from anywhere around the world, use it to even collect data from sensors and view them from anywhere.Protocols like MQTT and APIs of thingspeak to name a few can be used for large number of devices/sensors to standardize the communication protocol.