You are on page 1of 56

HOME AUTOMATION WITH INTERNET

OF THINGS
A Project Report

Submitted in Partial Fulfilment of the Requirements for the Award of the


Degree

OF

Bachelors of Technology

IN

[ELECTRICAL AND ELECTRONICS]


Submitted by:

SHAVEZ ALAM 2K16/EL/079

&

RISHABH KUMAR 2K16/EL/068

Under the Supervision of

Prof. BHARAT BHUSHAN

ELECTRICAL DEPT.

DELHI TECHNOLOGICAL UNIVERSITY

(Formerly Delhi College of Engineering)

Bawana Road, Delhi-110042


CANDIDATE’S DECLARATION

We declare that this thesis is our own work and has not been submitted in any
form for another degree or diploma at any university or other institution of
tertiary education. Information derived from the published or unpublished work
of others has been acknowledged in the text and a list of references has been
given.

Name of the Students Signatures of Students

Shavez Alam ...……………………...

Rishabh Kumar ...……………………....

Supervised by: - Prof. Bharat Bhushan

Signature: ……………………………...

Date: ……………………………...
Acknowledgement
At first, we utter our deepest gratitude to the almighty God, whose boundless
mercy made them completion of the project.

We are very much happy that we have taken efforts. However, it would not be
possible our part to complete without the kind support and help of an
individuals and organization. We would like to express our gratitude toward all
of them.

We are grateful to our supervisor Prof. Bharat Bhushan for his continuous
evaluation and supervision and also for providing us the necessary information
and equipment needed for the project. We highly appreciate the encouragement
that helps us to complete this project.

Our appreciation also goes to our beloved Delhi Technological University for
providing the opportunity to prove ourselves
Abstract

The special engineering project is a group project to build a home automation


system in a team of two. This paper proposes the design of Inter of Things (IoT)
based home automation system using Raspberry pi. Currently in day today’s life
we can hardly find a house without a home automation system. This project is
intended to construct a home automation system that uses any mobile device to
control the home appliances. This home automation system is based on IoT.
Home automation is very exciting field when it uses new technologies like
Internet of Things (IoT). Raspberry pi is credit card size computer. Raspberry pi
supports large number of peripherals. Raspberry pi is having different
communication media like Ethernet port, HDMI port, USB port, Display Serial
Interface, Camera Serial Interface, Bluetooth, Bluetooth low energy. It allows
to control number of home appliances simultaneously. Here local server is
created on Raspberry pi. User required to use different mobile devices like
smart phones, Laptops, Tablets to operate the home appliances with the help of
UI created on web page and the Android Application.

The system has been designed to patrol the interior of the room. Both members
of the team have specified sub-systems to concentrate on. The controller
manager used is responsible for the design of the system’s decision system.
Consequently, this report details the development of the system’s decision
system and mentions the project management. The decision system for the
controlling of home equipment is the top-level aspect of the system. The tasks it
must accomplish are to analyze the presence in the room, to control (mainly turn
on and turn off) the Air Conditioner and lighting of the room depending on
whether someone is going to enter the room or the room is going to be empty
and notify the security status of the room, and all of the above to be controlled
remotely using a designated application. The project management aspect is also
outlined briefly.
Table of Contents
1. Candidate’s Declaration i

2. Acknowledgement ii

3. Abstract Iii

4. Table of Contents iv

5. Introduction
5.1 Introduction 1
5.2 Components 2
5.3 Feasible IoT Platform Development 2
5.4 Protocols for Communication 3

6. Existing Solutions
6.1 Solutions 3
6.2 Other Approaches 4

7. Technology and Components Adapted


7.1 Devices 5
7.1.1 Raspberry pi 3 5
7.1.2 Arduino uno 5
7.1.3 Sensors 5
7.1.4 Bluetooth Module 7
7.1.5 IR LED and Photodiode pair 8
7.1.6 Solid State Relay 8
7.1.7 IRF540n 8
7.1.8 Power Supply 9
7.1.9 Physical Switches 9
7.2 Software Specifications 9
7.2.1 OpenCV 9
7.2.2 Arduino IDE 10
7.2.3 Languages 10

8. Home Automation System


8.1 The System 11
8.2 System Features 12
8.2.1 Face recognition 12
8.2.2 Secure Mode 12
8.2.3 Child Mode 12
8.2.4 Lora Module 13

9. System Block Diagram 14


10. Database Entity Relationship Diagram 15

11. System Logic Flowchart 16

12. Website 18

13. Conclusion 19

14. Coding Specifications


14.1 Arduino Controlling Code 20
14.2 Face Data Collection 26
14.3 Face Recognition 27
14.4 Live Face Feed 29
14.5 Face Tracker 30
14.6 Trainer 32
14.7 Website Homepage 34
14.8 Website main control page 35
14.9 Website links 36
14.10 Web server 36
14.11 JavaScript implementation 38
14.12 Reading of Data 41
14.13 Button layout 41
14.14 Cascading Style Sheet 44
14.15 Raspberry Pi I/O 47

15. References 50

List of Figures:
• Figure 1 DS18B20
• Figure 2 VEML7700 Lux Sensor
• Figure 3 Bluetooth Module
• Figure 4 IR Photodiode LED pair
• Figure 5 IRF540n
• Figure 6 Power Supply
• Figure 7 System Model
• Figure 8 Face Recognition Sample
• Figure 9 System Block Diagram
• Figure 10 Database ER diagram
• Figure 11 System Logic Flowchart
• Figure 12 Website Model
1. Introduction
1.1 Introduction:

Internet of Things is a concept where each device is assigned to an IP address and through
that IP address anyone makes that device identifiable on internet. The Internet is an evolving
entity. It started as the “Internet of Computers.” Research studies have forecast an explosive
growth in the number of “things” or devices that will be connected to the Internet. The
resulting network is called the “Internet of Things” (IoT).
IoT is having the potential to change the lifestyle of peoples. In day today’s life, people prefer
more of automatic systems rather than any manual systems. The major elements of this IoT
based home automation system are Raspberry pi and the Relay along with their driving
circuitry. Home automation can be defined as a mechanism removing as much human
interaction as technically possible and desirable in various domestic processes and replacing
them with programmed electronic systems. Ultimately it is a system that aims to heighten
quality of life with the automation of household appliances that may be controlled over the
Internet or Telephone.
An embedded system is a special-purpose system in which the computer is completely
encapsulated by or dedicated to the device or system it controls. Unlike a general-purpose
computer, such as a personal computer, an embedded system performs one or a few
predefined tasks, usually with very specific requirements. Since the system is dedicated to
specific tasks, design engineers can optimize it, reducing the size and cost of the product.
Embedded systems are often mass-produced, benefiting from economies of scale. Personal
digital assistants (PDAs) or handheld computers are generally considered embedded devices
because of the nature of their hardware design, even though they are more expandable in
software terms. This line of definition continues to blur as devices expand.
In terms of complexity embedded systems can range from very simple with a single
microcontroller chip, to very complex with multiple units, peripherals and networks mounted
inside a large chassis or enclosure.
A custom-made Raspberry Pi will be fitted at each power points or switch boards. It will act
as the control for all electrical appliances (lighting, fans, air conditioners etc.). There will be
no work for the user regarding his/her appliance. One has to initialize the required settings at
the time of setting up of the system. After that the system will be individual and self-
sustained. The custom Raspberry Pi will have relays fixed on, which will control all lighting
and fans or any other electrical appliances. This board will have a Wireless connection that
connects to an Internet hub. This Internet hub will be connected to the internet via LAN or
Wi-Fi (Depends upon the choice of the user). As mentioned earlier the internet acts as a
master since the entire control process is taken care of by an online server-side program (ASP
or PHP modules). The user just has to login in to the specified webpage during the time of
initialization and in case there is a need to change the automation settings. The web-page will
be coded in such a way that it provides complete control to the user over the automation
process such as timing and conditions for the automation process.
Home automation is the use of one or more computers to control basic home functions and
features automatically and sometimes remotely. An automated home is sometimes called a
smart home. Home automation can include the scheduling and automatic operation security
systems, lighting, reminder systems and entertainment appliances. Home automation may
also allow many vital home functions to be controlled remotely from anywhere in the world
using a device connected to the Internet. The fundamental components of a well-designed
home automation system (HAS) include a computer (or computers) with the appropriate
programming, the various devices and systems to be controlled, interconnecting cables or
wireless links, a high-speed Internet connection and essential home systems.The Home
Automation project is based on a Raspberry Pi 3 processor, which is supported by 1GB RAM
and running at 900 MHz CPU.

1.2 Components

Home automation has three major parts that this project intends to focus:

• Hardware
• Software/Apps
• Communication protocols

The right hardware enables the ability to develop your IoT prototype iteratively and respond
to technology pivots with ease and the economic feasibility is kept in mind to choose the
optimally minimum hardware

A self-built app and a home-based server communicating through the GSM module and
wireless (Bluetooth and Wi-Fi) is what this project aims onto as it is the most feasible for
domestic use

1.3 Feasible IoT Platform Development:

A feasible IoT will have platforms which are extremely divided over the IoT application and
security-related features that they provide. A few of these platforms are open source.
Expectations from a typical IoT platform:
• Device security and authentication
• Message brokers and message queuing
• Device administration
• Support towards protocols like CoAP, MQTT, and HTTP
• Data collection, visualization, and simple analysis capabilities
• Integrability with other web services
• Horizontal and vertical scalability
• WebSocket APIs for real-time for real-time information flow

Apart from what we mentioned above, more and more platform builders are open sourcing
their libraries to developers. Cloud platforms like AWS IoT, Azure IoT, IBM Bluemix
provide cloud support for IoT services required for the home automation to work smoothly on
its own.
But considering the cost and domestic unavailability of such platforms an app server of our
own based on the need is much more feasible
1.4 Protocols Used for Communication in Home Automation System:

The commonly preferred protocols are Wi-Fi, Bluetooth Low Energy, Zigbee. The protocol
selection can now be narrowed down by the following factors:

• Ability to perform identity verification


• Quality of sensor networks
• Data transfer rate
• Security level
• Network topology required
• Density of objects around
• Effective Distance to be covered

Considering these factors our system proposes a communication of the two processors
through a wireless module and the IoT sensors and switches to be communicating through
wireless channel to the Raspberry Pi and the whole system is connected over the android
application and GSM module through the home-based server.

The connection protocols used in this project include both Bluetooth and Wi-Fi, as the
raspberry pi is capable of both connection types and some of equipment connected to the
system make use of Wi-Fi connection protocol while some use Bluetooth, moreover the
mobile phone control is established by a Bluetooth connection only.

Our goal in this project is to provide the following comprises functionalities: controlling the
lighting, setting alarms and reminders, smart security system and some user customizable
features.
For the security aspect of the home automation system, we have implemented a smart
doorbell. Entertainment system includes speakers connected to the Raspberry Pi via
Bluetooth. The lighting functionality, alarms, reminders and entertainment system can be
remotely controlled via an android application present on an android device. The android
application controls the Raspberry Pi wirelessly to perform the necessary function. This
project can be customized as it has multiple GPIO ports that can be programmed and they can
give the user control over various utilities from his smart phone like security, surveillance,
lighting, energy management, access control, entertainment etc. These interfaces are all
possible by the help of the GPIO ports in the Raspberry Pi 3 board.

2. Existing Solutions
2.1 Solutions:

Currently, there are many papers on home automation systems already published by different
authors that provide similar functionality on a smaller scale.

The current systems use the microprocessors controlled through the website or Bluetooth or
wi-fi to control the lighting conditions, the air conditioning, the fans and other appliances.
The Wi-Fi tends to be slower, the Bluetooth however is still used and is somewhat popular
and these systems ensure just the purpose to be resolved but home automation is an area
which can be optimized much more than the current systems and have itself added some
features that can even further strengthen the system’s security, the efficiency and the
robustness.

For example, in “Smart Home Control by using Raspberry Pi & Arduino UNO”, the system
utilizes network-based Raspberry Pi 2 and Arduino Uno Microcontroller with an aim to
provide flexibility and to lower the cost to the smart home automation process. However, this
system requires many components, which adds to its complexity and cost.

One of the systems in “Internet of Things based Home Automation using Raspberry PI”
describes the use of Internet of Things (IoT) concept to interface home appliances with each
other using Raspberry Pi. This system, however, uses a web-based interface, which lacks the
ease-of-access for its user.

Another unpopular system in “Home automation using Raspberry Pi” suggests making the
use of an older version of Raspberry Pi, which does not contain inbuilt Wi-Fi support. This
increases the costs significantly, whilst also increasing complexity of the circuit. However,
our proposed system not only aims to be smart and efficient, but also simple, cost-effective
and technologically up-to-date.

In 19th century, concept of home automation came into the picture. The Electronic
Computing Home Operator was developed in the April 1968 and has been enhanced from a
set of spare electronics. Further X10 standard was developed to allow transmitters and
receivers to broadcasting messages such as “turn ON” and “turn OFF” via radio frequency.
X10 system has number of disadvantages.

With the invention of the Raspberry pi which is small credit card size computer having large
number of peripherals along with communication ports like Ethernet, USB ports, HDMI port,
now a day’s home automation is become very easy and interesting. Home automation
includes all that a building automation provides like door and window controls, climate
controls, control of multimedia home theatres, pet feeding, plant watering and so on. Home
automation is nothing but ‘Smart home’ or ‘Intelligent home’. Such smart homes or
intelligent homes are controlled with the help of various technologies. GSM, WIFI,
Bluetooth, Zig bee and so on are used for the purpose of home automation.

2.2 Other Approaches:

Another way is to build a customized system every time we need a new feature or any new
update in the existing technology is to be made which is both economically and practically
not feasible as it would require to integrate a new system for every task. Moreover, the
changes made will only be for a few devices not in bulk which will again increase the overall
cost of the system. Hence a better way should be to build a system that serves a general
purpose at the same time being personally customizable for user comfort with a cheap
solution and technical reforms which do not become outdated real soon.
3. Technology and Components Adapted
3.1 Devices
3.1.1 Raspberry Pi 3:

the Raspberry Pi is a series of credit card–sized single board computers developed in the
United Kingdom by the Raspberry Pi Foundation with the intention of promoting the
teaching of basic computer science. They develop free resources to help people learn about
computing and how to make things with computers. Raspberry Pi’s inception began in 2006.
Two models were announced in 19 February 2012: Model A and Model B. Model B+ was
announced in July 2014. Pi 3 Model B is announced on 29th February 2016. Raspberry pi is
low cost minicomputer. It is possible to connect Monitor of PC as well as television to the
Raspberry pi. Mouse and Keyboard can be connected to the Raspberry pi. All models having
a Broadcom system on a chip, it includes an ARM compatible central processing unit (CPU)
and an on-chip graphics processing unit. The Raspberry Pi 3 is the third generation Raspberry
Pi.Raspberry Pi 3 has: 802.11n Wireless LAN, A 1.2GHz 64-bit quad-core ARMv8 CPU,
Bluetooth 4.1, Bluetooth Low Energy(BLE), 1GB RAM, 4 USB ports, 40 GPIO pins, Full
HDMI port, Ethernet port, Combined 3.5mm audio jack and composite video, Camera
interface (CSI), Display interface (DSI), Micro SD card slot (now push-pull rather than push-
push), VideoCore IV 3D graphics core.

Raspberry pi supports different programming languages like C++, Python, SQL, and HTSQL.
C++ uses for programming Arduino.HTSQL (Hyper Text Structured Query Language) to
provide a web interface to database that is easy to query via the web browser. It also supports
java, java script, php and so on.

3.1.2 Arduino Uno:

The Arduino Uno is an open-source microcontroller board based on


the Microchip ATmega328P microcontroller and developed by Arduino.cc. The board is equipped
with sets of digital and analog input/output (I/O) pins that may be interfaced to various expansion
boards (shields) and other circuits. The board has 14 Digital pins, 6 Analog pins, and programmable
with the Arduino IDE (Integrated Development Environment) via a type B USB cable. It can be
powered by the USB cable or by an external 9-volt battery, though it accepts voltages between 7 and
20 volts. It is also similar to the Arduino Nano and Leonardo.

3.1.3 Sensors:

• Camera: - The 8MP camera module is capable of 1080p video and still imaging and connects
directly the Raspberry pi. The board around itself is 25mm x 20mm x 9mm and weighing in
around 3grams. Still images have 2592 X 1944 pixels maximum and also supports 1080p-
30fps, 720p-60fps, 480p-60/90fps video. ¼ 5M aperture, 2.9 Focal length, 3.29 FOV: 72.4
degrees.
• Temperature Sensor: The DS18B20 digital thermometer provides 9-bit to 12-bit Celsius
temperature measurements and has an alarm function with nonvolatile user-programmable
upper and lower trigger points. The DS18B20 communicates over a 1-Wire bus that by
definition requires only one data line (and ground) for communication with a central
microprocessor. In addition, the DS18B20 can derive power directly from the data line
(“parasite power”), eliminating the need for an external power supply.
Figure 13 DS18B20

• Lux Sensor: The Adafruit VEML7700 Lux sensor has 16-bit dynamic range for ambient
light detection from 0 lux to about 120 Klux with resolution down to 0.0036 lx/ct, with
software-adjustable gain and integration times.Interfacing is easy - this sensor uses plain,
universal I2C. We put this sensor on a breakout board with a 3.3V regulator and logic
level shifter so you can use it with 3.3V or 5V power/logic microcontrollers.

Figure 14 VEML7700 Lux Sensor

• GPS: The inbuilt positioning of the mobile phone which is used to host the system control
application will be used for tracking the user position to provide location-based features to the
user

3.1.4 Bluetooth module:

HC-06 Bluetooth module has red LED which indicates connection status, whether the
Bluetooth is connected or not. Before connecting to HC-05 module this red LED blinks
continuously in a periodic manner. When it gets connected to any other Bluetooth device,
its blinking slows down to two seconds.
This module works on 3.3 V. We can connect 5V supply voltage as well since the module
has on board 5 to 3.3 V regulator.

Figure 15 Bluetooth Module

As HC-06 Bluetooth module has 3.3 V level for RX/TX and microcontroller can detect
3.3 V level, so, no need to shift transmit level of HC-05 module. But we need to shift the
transmit voltage level from microcontroller to RX of HC-06 module.

3.1.5 IR LED and Photodiode pair

An IR sensor is a device which detects IR radiation falling on it. There are numerous
types of IR sensors that are built and can be built depending on the application.
Figure 16 IR Photodiode LED pair

3.1.6 Solid State Relay:

The solid-state relay (SSR) allows you to control high-current AC loads from lower
voltage DC control circuitry. Solid state relays have several advantages, they can be
switched by a much lower voltage and at a much lower current than most mechanical
relays. Also, because there’s no moving contacts, solid state relays can be switched much
faster and for much longer periods without wearing out.

3.1.7 IRF540N:

Figure 17 IRF540n

• Small signal N-Channel MOSFET


• Continuous Drain Current (ID) is 33A at 25°C
• Pulsed Drain Current (ID-peak) is 110A
• Minimum Gate threshold voltage (VGS-th) is 2V
• Maximum Gate threshold voltage (VGS-th) is 4V
• Gate-Source Voltage is (VGS) is ±20V
• Maximum Drain-Source Voltage (VDS) is 100V
• Turn ON and Turn off time is 35ns each’

3.1.8 Power Supply:

12Volt 5Amp, 60W Adaptor/ Power Supply

Figure 18 Power Supply

• Input Voltage: AC 100 - 264V 50 / 60Hz


• Output Voltage: 12V DC, 5A, and 60Watt
• Output Voltage Type - DC Current
• Shell Material: Plastic (PVC)
• Color: Black
• Weight: 350g Approx
• This Power Adaptor Has a 2.5mm x 5.5mm Output Pin Jack (Center Positive)

3.1.9 Physical Switches:

a common electrical switchboard is used for physical control of the equipment which
reflects its state to the server

3.2 SOFTWARE SPECIFICATIONS


3.2.1 OpenCV:

OpenCV (Open source computer vision) is a library of programming functions mainly


aimed at real-time computer vision. Originally developed by Intel, current specifications
used in the project work specify the use python opencv2.

3.2.2 Arduino IDE:


The Arduino Integrated Development Environment (IDE) is a cross-
platform application (for Windows, macOS, Linux) that is written in the programming
language Java. It is used to write and upload programs to Arduino compatible boards, but
also, with the help of 3rd party cores, other vendor development boards.

The source code for the IDE is released under the GNU General Public License, version
2. The Arduino IDE supports the languages C and C++ using special rules of code
structuring.The Arduino IDE supplies a software library from the Wiring project, which
provides many common input and output procedures. User-written code only requires two
basic functions, for starting the sketch and the main program loop, that are compiled and
linked with a program stub main() into an executable cyclic executive program with
the GNU toolchain, also included with the IDE distribution.

3.2.3 Languages:

1. Python: Used for the mainly programming the OpenCV system


for Raspberry Pi and a few components of the main Raspberry
Pi code

2. HTML5: For the basic layout of the website creation and


development which gives the framework on which further
developments of the webhost can be made

3. CSS: For visual design and visual enhancement of the website,


creating a user-friendly interactive interface for the website.

4. PHP: For server-side access and control of the database fed the
webhost.

5. JavaScript: For user-side access and control of the database fed


back again to the webhost.
4. Home Automation System:
4.1 The System

Our project focuses on the automation of appliances with the help of an application. In
today’s world, the main goal for any system is optimization. Any system developed aims at
streamlining the human efforts to a minimal and our system aims at doing the same. The
concept of home automation, using a simple android application, is directed to achieve the
same goal. In the previous studied models, the concept of home automation has been
implemented several times based on different functionalities. But with today’s progressive
times, all the appliances are IP based and there is a need for a system as advanced to
accommodate these changes. Hence the development of an application to control these
functionalities proves to be an optimal solution to overcome the drawbacks.

Home automation systems, give homeowners the power to fuse together their entertainment,
lighting, temperature control, and security into a single console. It bestows the power upon
the user, to perform specific functions without the need to physically do them.

Home automation can be extremely helpful for the elderly/disabled. They can perform
household activities with much more ease. The automation of appliances can reduce the need
to perform physical labor for these set of people who are not able to perform functions. This
project also ensures power saving by maintaining all the equipment to work at their optimum
level.

Figure 19 System Model


4.2 System Features

Providing automatic air conditioning, lighting and security features for the room which can
be controlled by an android application over a cell phone or from the website

Giving notifications on message as well as app notification about the current status of the
system

Keeping the air conditioning and lighting conditions ready if the user is nearing the room
based on the GPS location, and turning them off for energy saving

Alarm the user through app notification about any of the element malfunctioning

4.2.1 Face recognition:

1. Using a high-quality camera sensor, the image processing of the face


recognition can be done and status and identity of the population in the room
can be updated on the cloud

Figure 20 Face Recognition Sample

2. The lighting conditions and air conditioning can be altered to the optimum
state depending on the census of the room

4.2.2 Secure Mode:

An alarm and a notification will be triggered if any person enters the room during the secure
state of the system, and only physical switches will function.

4.2.3 Child Mode:


In here only the changes done through the cloud will affect the system the physical hardware
in the room will be over-ridded and will have no effect

4.2.4 LORA module:

Long range communication using 433/868mhz frequency band using very low power battery
can be used to provide the automation on a large like in a big farmhouse or a large storage
space
5. Block Diagram for the final implemented system:
Our project focuses on the automation of appliances with the help of an android application
and a web server.

The camera senses the surroundings for presence of user and recognition of registered users
through the trained face recognition system.

Figure 21 System Block Diagram

The temperature sensor on detection of user presence by the camera will dictate the air
conditioning to be set to user defined condition automatically, the presence can also be
detected if the user is nearing or approaching the premises user real time GPS system inbuilt
in the mobile device hosting the android application or the web server.

On any of such detection of user presence in the premises, the lux sensor also will similarly
detect if the lighting conditions match the user defined settings and change the conditions if
they fail to do so automatically.

The system will also alert the user if the camera detects the presence of an intruder forcing
the system to enter the secure mode, and freezing the current state.
6. Database Entity Relationship Diagram: -
This Entity Relation Diagram shows the model of the SQL database designed for our Home
Automation System feeding and receiving constantly to the webhost server.

Any change made in the system physically by the user is updated in the database which in
turn updates the webhost server as soon as the first refresh of the system occurs, similarly any
change made by the user on the webhost application will be notified to the server which will
in turn update the database and make the physical change in accordance, both these functions
are aimed to occur simultaneously.

Figure 22 Database ER diagram


7. System Logic Flowchart: -
The system is to repeatedly analyze the current state of the premises and user and dictating
the state of the devices accordingly. The system has 3 modes of functioning: -

1. Auto Mode
2. Secure Mode
3. Child Mode
The default mode being the Auto mode, in this mode the system uses the GPS sensor of the
host mobile device to detect if the user is nearing or approaching the premises if the GPS tells
that the user is approaching then the system sets the connected devices to the pre-defined
state.

Figure 23 System Logic Flowchart


The Auto mode also checks the camera feed for detection of the user inside the area under
control, if the user is inside the area then the system should already have been set to the pre-
defined state and then the system keeps on checking if the user has made any changes to the
physical switches of the device or not. If in any case the camera detects the presence of any
intruder inside the premises then the system will send an alert message to the user and he
system will freeze the current state ignoring all the changes further made by the intruder, and
if nobody is present inside the area then the system turn will turn off all the devices for
energy saving.

In the secure mode, only the physical switches will function and an alert message will be sent
to the user about the entrance to secure mode so that the user can take the proper action
required.

The child mode is made to deploy when a small child or someone not capable of handling the
devices is inside the premises then the user can the full remote control of the area as o
physical changes made will have effect on the system only changes made by the user through
the server will have effect.

All these features of this system can be employed to a large area also if the system is
accompanied by a range enhancement module, which is optional in the current configuration
for better user flexibility and conservation of resources.
8. Website:
A dedicated server has been designed for the access and control of the automation system
with a localized database and the web support of WEBHOST organization with the following
URL:

https://autointegratedmachine.000webhostapp.com/

The Front page or the home page of the website gets us directly to the user login page of the
server which when logged in with authenticated credentials directsthe browser to the button
controls of all the connected equipment within the system using simple slide buttons.

The pages are designed using HTML+ and CSS which were used to design and style the
website for providing a comfortable user interface. PHP is used to provide server side access
to the system which will then reflect on the website indicating the current status of the system
and changes being made or been made, while the implementation of JavaScript is used to
provide any user the access to the server through which the user can give commands to the
system make changes to the existing state or observe the changes been made.

Figure 24 Website Model


9. Conclusion:
Developed a comprehensive solution that provides a user-friendly home
automation and security application for homes. We accomplished this through
the integration of cheap, off-the-shelf, widely available devices, interfaces and
software coupled with a user-friendly interface. This work provides users with
an easy to use in mobile application and website using which the user can
remotely access and control their home appliances and security. Face
recognition system and camera surveillance successfully play the role in
providing security features and user identification.

This work for IoT based home automation is completed successfully using an
internet server, Raspberry pi, Arduino Uno and all the required devices and
sensors. It is a reliable and scalable home automation system with low cost and
easy implementation. It makes human life easy and comfortable minimizing
manual work. It is possible to operate home appliances from any part of the
globe using the mobile application or the website through our dedicated server.

While some of the devices and sensors are wired the majority of them are
functioning wirelessly and ambitiously we intend to provide a compete wire-
free system which can be movable and can be operated and used in company
offices, houses, farms, crop fields and warehouses for automated experience and
security to the whole premises with one single system. This system intends to
provide a full security support for home and offices.

In future the system is aimed to be accompanied by an artificial intelligence


(A.I.) operating system which will recognize usage patterns on how the user is
using the system, the frequency of use, average number of users, average time
of usage and other general patterns, giving the system a self-learning ability to
provide a better environment to the user, and change the default settings time to
time automatically.
10. Coding Specifications
10.1 Arduino controlling code:

i): -

#include <SoftwareSerial.h>

SoftwareSerialmySerial(8,9); // RX, TX

int LOAD_2=6;

int LOAD_1=5;

int LOAD_3=7;

int Received=0;

int LOAD_1_state =0;

int LOAD_2_state = 0;

int LOAD_3_state = 0;

void setup(){

Serial.begin(19200);

mySerial.begin(9600);

pinMode(LOAD_2,OUTPUT);

pinMode(LOAD_1,OUTPUT);

pinMode(LOAD_3,OUTPUT);

void loop(){

if(mySerial.available()>0)

Received = mySerial.read();

////////////////LOAD_1/////////////////////

if (LOAD_1_state == 0 && Received == '1')


{

digitalWrite(LOAD_1,HIGH);

LOAD_1_state=1;

Received=0;

if (LOAD_1_state ==1 && Received == '1')

digitalWrite(LOAD_1,LOW);

LOAD_1_state=0;

Received=0;

///////////////////////////////////////////

////////////////LOAD_2/////////////////////

if (LOAD_2_state == 0 && Received == 'a')

digitalWrite(LOAD_2,HIGH);

LOAD_2_state=1;

Received=0;

if (LOAD_2_state ==1 && Received == 'a')

digitalWrite(LOAD_2,LOW);

LOAD_2_state=0;

Received=0;

///////////////////////////////////////////
////////////////LOAD_3/////////////////////

if (LOAD_3_state == 0 && Received == '2')

digitalWrite(LOAD_3,HIGH);

LOAD_3_state=1;

Received=0;

if (LOAD_3_state ==1 && Received == '2')

digitalWrite(LOAD_3,LOW);

LOAD_3_state=0;

Received=0;

///////////////////////////////////////////

ii): -

#include <SoftwareSerial.h>

SoftwareSerialmySerial(8, 9); // RX, TX

int Received = 0;

int LOAD_1_state = 0;

int LOAD_2_state = 0;

long int current = 0;

long int prev = 0;


void setup() {

Serial.begin(19200);

mySerial.begin(9600);

DDRB = DDRB | B111100;

current = millis();

prev = millis();

void loop() {

if (mySerial.available() > 0)

Received = mySerial.read();

Serial.println(Received);

///////// OUTPUT /////////////

if (LOAD_1_state == 0 && Received == 1)

PORTB = PORTB | B000100;

LOAD_1_state = 1;
Received = 0;

if (LOAD_1_state == 1 && Received == 1)

PORTB = PORTB & B111011;

LOAD_1_state = 0;

Received = 0;

if (LOAD_2_state == 0 && Received == 2)

PORTB = PORTB | B001000;

LOAD_2_state = 1;

Received = 0;

if (LOAD_2_state == 1 && Received == 2)

PORTB = PORTB & B110111;

LOAD_2_state = 0;

Received = 0;

if (LOAD_3_state == 0 && Received == 3)

PORTB = PORTB | B010000;

LOAD_1_state = 1;
Received = 0;

if (LOAD_3_state == 1 && Received == 3)

PORTB = PORTB & B10111;

LOAD_1_state = 0;

Received = 0;

if (LOAD_4_state == 0 && Received == 4)

PORTB = PORTB | B100000;

LOAD_1_state = 1;

Received = 0;

if (LOAD_4_state == 1 && Received == 4)

PORTB = PORTB & B011111;

LOAD_1_state = 0;

Received = 0;

//////// INPUT ////////

if (current - prev> 1000) {


int x = digitalRead(4);

int y = digitalRead(5);

int z = digitalRead(6);

int t = digitalRead(7);

int M = x*1000 + y*100 + z*10 + t;

mySerial.write(M);

prev = millis();

else {

current = millis();

10.2 Face Data Collection (Opencv2):

import cv2

import os

cam = cv2.VideoCapture(0)

cam.set(3, 640) # set video width

cam.set(4, 480) # set video height

face_detector =
cv2.CascadeClassifier('/home/pi/Desktop/project_security/faces_data.xml')

# For each person, enter one numeric face id

face_id = input('\n enter user id end press <return> ==> ')

print("\n [INFO] Initializing face capture. Look the camera and wait ...")

# Initialize individual sampling face count

count = 0

while(True):
ret, img = cam.read()

#img = cv2.flip(img, -1) # flip video image vertically

gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

faces = face_detector.detectMultiScale(gray, 1.3, 5)

for (x,y,w,h) in faces:

cv2.rectangle(img, (x,y), (x+w,y+h), (255,0,0), 2)

count += 1

# Save the captured image into the datasets folder

cv2.imwrite("/home/pi/dataset/" + str(face_id) + '.' + str(count) + ".jpg",


gray[y:y+h,x:x+w])

cv2.imshow('image', img)

k = cv2.waitKey(100) & 0xff # Press 'ESC' for exiting video

if k == 27:

break

elif count >= 30: # Take 30 face sample and stop video

break

# Do a bit of cleanup

print("\n [INFO] Exiting Program and cleanup stuff")

cam.release()

cv2.destroyAllWindows()

10.3 Face Recognition:

import io

import picamera

import cv2

import numpy
#Create a memory stream so photos doesn't need to be saved in a file

stream = io.BytesIO()

for i in range(1,10):

#Get the picture (low resolution, so it should be quite fast)

#Here you can also specify other parameters (e.g.:rotate the image)

with picamera.PiCamera() as camera:

camera.resolution = (1080, 720)

camera.capture(stream, format='jpeg')

#Convert the picture into a numpy array

buff = numpy.fromstring(stream.getvalue(), dtype=numpy.uint8)

#Now creates an OpenCV image

image = cv2.imdecode(buff, 1)

#Load a cascade file for detecting faces

face_cascade =
cv2.CascadeClassifier('/home/pi/Desktop/project_security/faces_data.xml')

#Convert to grayscale

gray = cv2.cvtColor(image,cv2.COLOR_BGR2GRAY)

#Look for faces in the image using the loaded cascade file
faces = face_cascade.detectMultiScale(gray, 1.1, 5)

print "Found "+str(len(faces))+" face(s)"

#Draw a rectangle around every found face

for (x,y,w,h) in faces:

cv2.rectangle(image,(x,y),(x+w,y+h),(255,255,0),2)

#Save the result image

cv2.imwrite('result.jpg',image)

10.4 Live Face Feed:

import numpy as np

import cv2

faceCascade =
cv2.CascadeClassifier('/home/pi/Desktop/project_security/faces_data.xml')

cap = cv2.VideoCapture(0)

cap.set(3,640) # set Width

cap.set(4,480) # set Height

while True:

ret, img = cap.read()

#img = cv2.flip(img, -1)

gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

faces = faceCascade.detectMultiScale(

gray,

scaleFactor=1.2,
minNeighbors=5,

minSize=(20, 20)

i=1

for (x,y,w,h) in faces:

i == 0

print "detected " + str(faces)

cv2.rectangle(img,(x,y),(x+w,y+h),(255,0,0),2)

roi_gray = gray[y:y+h, x:x+w]

roi_color = img[y:y+h, x:x+w]

if i == 1:

print "not detected"

cv2.imshow('video',img)

k = cv2.waitKey(30) & 0xff

if k == 27: # press 'ESC' to quit

break

cap.release()

cv2.destroyAllWindows()

10.5 Face tracker:

import cv2

import numpy as np

import os

recognizer = cv2.face.LBPHFaceRecognizer_create()

recognizer.read('/home/pi/Desktop/face_track_name/trainer/trainer.yml')

cascadePath = "/home/pi/Desktop/project_security/faces_data.xml"
faceCascade = cv2.CascadeClassifier(cascadePath);

font = cv2.FONT_HERSHEY_SIMPLEX

#iniciate id counter

id = 0

# names related to ids: example ==> Marcelo: id=1, etc

names = ['None', 'RK', 'Shavez', 'Ilza', 'Z', 'W']

# Initialize and start realtime video capture

cam = cv2.VideoCapture(0)

cam.set(3, 640) # set video widht

cam.set(4, 480) # set video height

# Define min window size to be recognized as a face

minW = 0.1*cam.get(3)

minH = 0.1*cam.get(4)

while True:

ret, img =cam.read()

#img = cv2.flip(img, -1) # Flip vertically

gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)

faces = faceCascade.detectMultiScale(

gray,

scaleFactor = 1.2,

minNeighbors = 5,

minSize = (int(minW), int(minH)),

for(x,y,w,h) in faces:

cv2.rectangle(img, (x,y), (x+w,y+h), (0,255,0), 2)


id, confidence = recognizer.predict(gray[y:y+h,x:x+w])

# Check if confidence is less them 100 ==> "0" is perfect match

if (confidence < 100):

id = names[id]

confidence = " {0}%".format(round(100 - confidence))

else:

id = "unknown"

confidence = " {0}%".format(round(100 - confidence))

cv2.putText(img, str(id), (x+5,y-5), font, 1, (255,255,255), 2)

cv2.putText(img, str(confidence), (x+5,y+h-5), font, 1, (255,255,0), 1)

cv2.imshow('camera',img)

k = cv2.waitKey(100) & 0xff # Press 'ESC' for exiting video

if k == 27:

break

# Do a bit of cleanup

print("\n [INFO] Exiting Program and cleanup stuff")

cam.release()

cv2.destroyAllWindows()

10.6 Trainer:

import cv2

import numpy as np

from PIL import Image

import os

# Path for face image database


path = '/home/pi/Desktop/face_track_name/dataset/'

recognizer = cv2.face.LBPHFaceRecognizer_create()

detector = cv2.CascadeClassifier("/home/pi/Desktop/project_security/faces_data.xml");

# function to get the images and label data

def getImagesAndLabels(path):

imagePaths = [os.path.join(path,f) for f in os.listdir(path)]

faceSamples=[]

ids = []

for imagePath in imagePaths:

PIL_img = Image.open(imagePath).convert('L') # convert it to grayscale

img_numpy = np.array(PIL_img,'uint8')

id = int(os.path.split(imagePath)[-1].split(".")[1])

faces = detector.detectMultiScale(img_numpy)

for (x,y,w,h) in faces:

faceSamples.append(img_numpy[y:y+h,x:x+w])

ids.append(id)

return faceSamples,ids

print ("\n [INFO] Training faces. It will take a few seconds. Wait ...")

faces,ids = getImagesAndLabels(path)

recognizer.train(faces, np.array(ids))

# Save the model into trainer/trainer.yml

recognizer.write('/home/pi/Desktop/face_track_name/trainer/trainer.yml') #
recognizer.save() worked on Mac, but not on Pi

# Print the numer of faces trained and end program

print("\n [INFO] {0} faces trained. Exiting Program".format(len(np.unique(ids))))


10.7 Website Homepage (index.html):

<!DOCTYPE html>

<html>

<head>

<meta charset="utf-8">

<title>A.I.M.</title>

<link rel="stylesheet" type="text/css" href="style(1).css">

<style >

.wrapper {

text-align: center;

</style>

</head>

<body>

<div class="loginbox">

<imgsrc="logo.jpg" alt="AIM logo" class="avatar">

<h1>Login Here</h1>

<form action="page2.php" method="post">

<p>Username</p>

<input type="text" name="username" placeholder="Enter username" ><br>

<p>Password</p>

<input type="password" name="password" placeholder="Enter password" ><br>

<input type="submit" value="submit"><br>

</form>

</div>

<footer>

<p ><h3>Project Supervisor: Prof. Bharat Bhushan</h3></p>


<p>

<strong>Created By:</strong>

<ul>

<li>RISHABH KUMAR-2K16/EL/068</li>

<li>SHAVEZ ALAM-2K16/EL/079</li>

</ul>

</p>

<p>

<h2> Delhi Technological University (D.T.U.)</h2>

</p>

</footer>

</body>

</html>

10.8 Website Main control page(page2.php)

<?php

if ($_POST["username"] != "projectaim" && $_POST["password"] != "dtu123"){

/*echo $_POST["username"];

echo "<br>";

echo $_POST["password"];

echo "<br>";*/

echo "<h1>>Login Failed</h1>";

//header("location: http://localhost:4000/OneDrive/PROJECT%20-
%20AIM/website/site.php" );

else{

echo "<h1>>Login Successful</h1>";

include "link.php";
}?>

10.9 Website links (link.php):

<!DOCTYPE html>

<html lang="en" dir="ltr">

<head>

<meta charset="utf-8">

<title></title>

</head>

<body>

<br>

<br>

<h1 h1 style="font-size:50px;color:red;" align = "center" ><i><b>PROPOSED LAYOUT OF


SWITCHES</b></i><h1>

<br>

<br>

<br>

<br>

<a href="js.php"><br><h4 align = "center">CLICK HERE FOR : WORKING LAYOUT</h4></a>

<a href="button.html"><br><h4 align = "center">CLICK HERE FOR : VISUAL


LAYOUT</h4></a>

</body>

</html>

10.10 Web Server (server.php):

<!DOCTYPE html>

<html lang="en" dir="ltr">

<head>

<meta charset="utf-8">
<title></title>

<script type="text/javascript">

setTimeout(function(){

location.reload();

},2000); // refresh every 10000 milliseconds

</script>

</head>

<body>

<div id = "update">

<?php

/*$dbservername = "localhost";

$dbusername = "root";

$dbpassword = "";

$dbname = "a.i.m.";*/

$dbservername = "localhost";

$dbusername = "rk";

$dbpassword = "Db--2020";

$dbname = "switches";

$conn = mysqli_connect($dbservername,$dbusername,$dbpassword,$dbname);

if(!$conn){

echo "not connected";

else {

//echo "connected";

echo "<br>";

$sql = "SELECT * FROM switches WHERE switch_id = 'S1'";

$result = mysqli_query($conn,$sql);

$RC = mysqli_num_rows($result);
//echo $RC;

echo "<br>";

if($RC > 0){

while ($row = mysqli_fetch_assoc($result)){

//echo "stauts: ";

//echo $row['status_s'];

$server_stat = $row['status_s'];

//echo $server_stat;

$value = $server_stat;

$emp = ["id" => $value];

$json = json_encode($emp);

?>

</div>

</body>

</html>

10.11 JavaScript implementation (js.php):

<?php include 'server.php'; ?>

<!DOCTYPE html>

<html lang="en" dir="ltr">

<head>

<meta charset="utf-8">

<title>aim</title>

<script type="text/javascript" src="js\jquery-3.5.0.min.js">

</script>

<style>
.wrapper {

text-align: center;

.button {

background-color: #4CAF50;

border: none;

color: white;

padding: 15px 32px;

text-align: center;

text-decoration: none;

display: inline-block;

font-size: 16px;

margin: 4px 2px;

cursor: pointer;

</style>

</head>

<body>

<script type="text/javascript">

function change(){

var swth1={};

var emp = <?= $json?>;

console.log(emp["id"]);

swth1.id = 'S1';

swth1.stat = emp["id"];

console.log(swth1.stat);

if (swth1.stat == '0'){

swth1.stat = '1';
}

else{

swth1.stat = '0';

console.log(swth1);

$.ajax({

url:"readJson.php",

method :"post",

data : swth1,

success : function(res){

console.log(res);

})

</script>

<div class="wrapper">

<button class="button" onclick="change()">SWITCH 1</button>

<?php

if ($server_stat == 0){

echo "<h1>light OFF</h1>";

else{

echo "<h1>light ON</h1>";

?>

<a href="link.php"><br><h1>CLICK HERE: PROPOSED LAYOUT PAGE</h1></a>

</div>
</body>

</html>

10.12 Reading of Data by JavaScript (readJson.php):

<?php

/* print_r($_POST["id"]);

print_r($_POST);

if ($_POST["id"] == 'S1')

$swth_s = $_POST["stat"];

print_r($swth_s);

$dbservername = "localhost";

$dbusername = "rk";

$dbpassword = "Db--2020";

$dbname = "switches";

$conn = mysqli_connect($dbservername,$dbusername,$dbpassword,$dbname);

$sql = "UPDATE switches SET status_s = $swth_s WHERE switch_id = 'S1';";

mysqli_query($conn,$sql);

if ($swth_s == 0){

echo "switch turn OFF";

else {

echo "switch turn ON";

?>

10.13 Button Layout:

<!DOCTYPE html>

<html>
<head>

<meta name="viewport" content="width=device-width, initial-scale=1">

<style>

.switch {

position: relative;

display: table-cell ;

width: 60px;

height: 34px;

.switch input {

opacity: 0;

width: 0;

height: 0;

.slider {

position: absolute;

cursor: pointer;

top: 0;

left: 0;

right: 0;

bottom: 0;

background-color: #ccc;

-webkit-transition: .4s;

transition: .4s;

.slider:before {

position: absolute;

content: "";
height: 26px;

width: 26px;

left: 4px;

bottom: 4px;

background-color: white;

-webkit-transition: .4s;

transition: .4s;

input:checked + .slider {

background-color: #70db70;

input:focus + .slider {

box-shadow: 0 0 1px #70db70;

input:checked + .slider:before {

-webkit-transform: translateX(26px);

-ms-transform: translateX(26px);

transform: translateX(26px);

.slider.round {

border-radius: 34px;

.slider.round:before {

border-radius: 50%;

</style>

</head>
<body>

<h3>BUTTON 1...</h3>

<label class="switch">

<input type="checkbox">

<span class="slider round"></span>

</label>

<h3>BUTTON 2...</h3>

<label class="switch">

<input type="checkbox">

<span class="slider round"></span>

</label>

<h3>BUTTON 3...</h3>

<label class="switch">

<input type="checkbox">

<span class="slider round"></span>

</label>

<h3>BUTTON 4...</h3>

<label class="switch">

<input type="checkbox">

<span class="slider round"></span>

</label>

<a href="link.php"><br><h1>CLICK HERE: PROPOSED LAYOUT PAGE</h1></a>

</body>

</html>

10.14 Cascading Style Sheet (CSS):

body {

margin: 0;

padding: 0;
background: url(dark-paths.png);

font-family: sans-serif;

.loginbox{

width: 320px;

height: 420px;

background: #000;

color: #fff;

top: 50%;

left: 50%;

position: absolute;

transform: translate(-50%,-50%);

box-sizing: border-box;

padding: 70px 30px;

.avatar{

width: 100px;

height: 100px;

border-radius: 50%;

position: absolute;

top: -50px;

left: calc(50% - 50px);

h1{

margin: 0;

padding: 0 0 20px;

text-align: center;

font-size: 22px;
}

.loginbox p{

margin: 0;

padding: 0;

font-weight: bold;

.loginbox input{

width: 100%;

margin-bottom: 20px;

.loginbox input[type="text"], input[type="password"]

border-top: 0px;

border-left: 0px;

border-right: 0px;

border-bottom: 1px soild #fff;

background: transparent;

outline: none;

height: 40px;

color: #fff;

font-size: 16px;

.loginbox input[type="submit"]{

border: none;

outline: none;

height: 40px;

background: #fb2525;

color: #fff;
font-size: 18px;

border-radius: 20px;

.loginbox input[type="submit"]:hover{

cursor: pointer;

background: #ffc107;

color: #000;

footer {

background-color: #4dffc3;

text-align: center;

bottom: 0px;

position: absolute;

width: 100%;

height: 21%;

ul

list-style-position: inside;

10.15 Raspberry pi I/O: -

import serial

import numpy as np

port = serial.Serial(port = "/dev/rfcomm0",

baudrate=9600,

parity = serial.PARITY_NONE,
stopbits = serial.STOPBITS_ONE,

bytesize = serial.EIGHTBITS,

timeout = 1

# reading and writing data from and to arduino serially.

# rfcomm0 -> this could be different

while True:

print ("DIGITAL LOGIC -- > SENDING...")

rcv = port.read()

rcv = rcv *10000

M = str(rcv)

if (M[1] == '0'):

port.write(b'\x01')

elif (M[1] == '1') :

port.write(b'\x01')

elif (M[2] == '0'):

port.write(b'\x02')

elif (M[2] == '1') :

port.write(b'\x02')

elif (M[3] == '0') :

port.write(b'\x03')

elif (M[3] == '1') :

port.write(b'\x03')

elif (M[4] == '0') :

port.write(b'\x04')
elif (M[4] == '1') :

port.write(b'\x04')

time.sleep( 0.5 )
11. References
• https://www.w3schools.com/html/
• Smart Home: Digital Assistants, Home Automation, and the Internet of Things- by
Michael Stanton Young, Cathy Young
• Emerging Technology Trends: Frequently Asked Questions: Blockchain,
Cryptocurrencies, Artificial Intelligence, Augmented Reality, Smart Homes, and more.. –
by Aditi Agarwal
• Learning PHP, MySQL, JavaScript, and CSS: A Step-by-Step Guide to Creating
Dynamic Websites – by Robin Nixon.
• OpenCV-Python with MariaDB for Absolute Beginners: A Hands-On, Practical
Database-Driven Applications- by Vivian Siahaan, Rismon HasiholanSianipar
• MYSQL: SQL Database Programming for Beginners – by Kevin Lioy
• OpenCV: - https://docs.opencv.org/
• HTML5 Solutions: Essential Techniques for HTML5 Developers 1st ed. Edition - by
Marco Casario (Author), Peter Elst (Contributor), Charles Brown (Contributor), Nathalie
Wormser (Contributor), Cyril Hanquez (Contributor)
• HTML5 for Masterminds, 3rd Edition: How to take advantage of HTML5 to create
responsive websites and revolutionary applications 3rd Edition - by J D Gauchat (Author)
• D. Bian, M. Pipattanasomporn, and S. Rahman, “Assessment of Communication
Technologies for a Home Energy Management System,” IEEE Trans. Consumer
Electron., 2014
• Eleni Isa, Nicolas Sklavos, “Smart Home Automation: GSM Security System Design &
Implementation ,” IEEE 2015.
• R. Piyare and M. Tazil, "Bluetooth Based Home Automation System Using Cell phone,"
in IEEE 15th International Symposium on Consumer Electronics, Singapore 2011
• Sharma, Rupam Kumar, et al. "Android interface-based GSM home security system."
Issues and Challenges in Intelligent Computing Techniques (ICICT), 2014 International
Conference on. IEEE, 2014.
• Karia, Deepak, et al. "Performance analysis of ZigBee based Load Control and power
monitoring system." Advances in Computing, Communications and Informatics
(ICACCI), 2013 International Conference on. IEEE, 2013.

You might also like