final design report - calvin college | grand rapids, … · the homealive project was to design a...

123
Final Design Report HomeAlive Team 9 2014 2015 Andrew Jo Okkar Moe Myint Hezkiel Nanda Jeremy Ward Engineering 340: Senior Design Project Calvin College May 13, 2015

Upload: dangduong

Post on 19-Aug-2018

217 views

Category:

Documents


0 download

TRANSCRIPT

Final Design Report

HomeAlive

Team 9

2014 – 2015

Andrew Jo

Okkar Moe Myint

Hezkiel Nanda

Jeremy Ward

Engineering 340: Senior Design Project

Calvin College

May 13, 2015

© Andrew Jo, Okkar Myint, Hezkiel Nanda, Jeremy Ward, and Calvin College

Abstract

The HomeAlive project was to design a home automation system that allows the monitoring and

control of any household device from any remote location using a mobile phone, tablet, or computer.

Most homes do not utilize the technology available in the modern age, and the electrical devices

within them are unnecessarily inaccessible. This project shows that the addition of a cost-effective,

aftermarket home automation system to a house would result in productivity, security, and environmental

conservation gains. The project’s system prototype allows the reliable control and monitoring of

household devices via remote user interfaces.

The design of a home automation system that satisfies this need could take many various forms;

the implementation that has been chosen includes sample devices, gateways, a server, and user interfaces.

These components form a network that allows information and commands to be sent from the user

interfaces to a specific device, and from each device to the user interfaces. The server, gateway, and user

interface required software design, and each sample device required both hardware and software design.

Additionally, the electrical and wireless communication between these components required significant

hardware and software design with a focus on protocol selection and utilization.

The final prototype that was designed and implemented throughout this project was completed by

May 9, 2015. In addition to the development of a functional prototype, this project included giving

presentations, recording documentation, writing reports, and maintaining a web presence. A project

budget was established and followed, consisting of approximately $600 as allocated to the project by the

Calvin College Engineering Department. This funding was spent wisely in order to obtain the

development tools and physical parts necessary to implement the design. The team responsible for this

project consists of four electrical and computer engineering students: Andrew Jo, Hezkiel Nanda, Jeremy

Ward, and Okkar Moe Myint. Calvin College engineering Professor Mark Michmerhuizen, Gentex

employee Eric Walstra, and SpinDance Inc. employee David van Geest all generously agreed to support

the team for the duration of the project.

The progression of the HomeAlive project from September, 2014 to May, 2015 is one of

decreasing and increasing scopes. First, the team considered designing an entire home automation system

with four sample devices. Eventually, they realized that this was a very large scope, and narrowed the

project down to a home automation system prototype with a single sample device. In March, the team

reevaluated their schedule and budget, then decided to revisit some of their original goals; they re-

increased their scope to include two sample devices and some additional features. The prototype was

completed by May 9 with some minor bugs remaining as explained below. However, there are some

areas that would require improvement if this project were extended, including performance testing.

The HomeAlive prototype home automation system allows the monitoring and control of two

households, and each household includes a thermostat and an outlet adapter as sample devices. Users

interact with the prototype via an intuitive website user interface, and system communication is managed

using the server and one gateway per household.

i

1 Contents 1 Contents ............................................................................................................................................. i

2 Table of Figures ............................................................................................................................... vi

3 Table of Tables .............................................................................................................................. viii

4 Abbreviations ................................................................................................................................... ix

5 Introduction ....................................................................................................................................... 1

5.1 Report & Project Context .............................................................................................................. 1

5.2 Problem Statements ...................................................................................................................... 1

5.3 Project Definition & Objectives .................................................................................................... 1

5.4 Scope & Constraints ..................................................................................................................... 2

6 Acknowledgments ............................................................................................................................. 3

7 Project Management ......................................................................................................................... 4

7.1 Team Organization ........................................................................................................................ 4

7.1.1 Team Advisor ........................................................................................................................ 4

7.1.2 Course Instructors at Calvin College .................................................................................... 4

7.1.3 Industrial Consultants ........................................................................................................... 4

7.1.4 Team Members ..................................................................................................................... 4

7.2 Team Meetings .............................................................................................................................. 4

7.3 Team Documentation & Task Organization ................................................................................. 4

7.4 Schedule ........................................................................................................................................ 5

7.4.1 Milestones ............................................................................................................................. 5

7.4.2 Schedule Management .......................................................................................................... 5

7.5 Budget Management ..................................................................................................................... 6

7.5.1 Sources of Funding ............................................................................................................... 6

7.5.2 Budget Details ....................................................................................................................... 6

8 System Requirements ........................................................................................................................ 8

8.1 Requirements Categories .............................................................................................................. 8

8.1.1 Functional ............................................................................................................................. 8

8.1.2 Performance .......................................................................................................................... 9

9 System Architecture ........................................................................................................................ 10

9.1 Conceptual Diagram ................................................................................................................... 10

9.2 Component Summaries ............................................................................................................... 11

9.2.1 User Interfaces Summary .................................................................................................... 11

9.2.2 Server Summary .................................................................................................................. 11

9.2.3 Gateways Summary ............................................................................................................ 11

ii

9.2.4 Devices Summary ............................................................................................................... 11

9.2.5 Component Interactions Summary ...................................................................................... 12

10 Component Requirements ........................................................................................................... 14

10.1 User Interface Requirements ....................................................................................................... 14

10.1.1 Functional ........................................................................................................................... 14

10.1.2 Performance ........................................................................................................................ 14

10.2 Server Requirements ................................................................................................................... 15

10.2.1 Functional ........................................................................................................................... 15

10.2.2 Performance ........................................................................................................................ 15

10.3 Gateway Requirements ............................................................................................................... 16

10.3.1 Functional ........................................................................................................................... 16

10.3.2 Performance ........................................................................................................................ 16

10.4 Device Requirements .................................................................................................................. 17

10.4.1 Outlet Adapter ..................................................................................................................... 17

10.4.2 Thermostat .......................................................................................................................... 19

11 Task Specifications and Schedule ............................................................................................... 21

11.1 Work Breakdown Summary........................................................................................................ 21

11.2 Time Tracking Report ................................................................................................................. 22

11.3 Scheduling Conclusion ............................................................................................................... 25

12 Design Norms ............................................................................................................................. 26

12.1 Stewardship ................................................................................................................................. 26

12.2 Justice .......................................................................................................................................... 26

12.3 Trust ............................................................................................................................................ 26

13 Design Criteria, Alternatives, Research, & Decisions ................................................................ 27

13.1 Gateway OS ................................................................................................................................ 27

13.1.1 Criteria ................................................................................................................................ 27

13.1.2 Options ................................................................................................................................ 27

13.1.3 Decision Matrix................................................................................................................... 27

13.1.4 Design Decision .................................................................................................................. 27

13.2 Terminal Device to Gateway Communication Protocol ............................................................. 28

13.2.1 Criteria ................................................................................................................................ 28

13.2.2 Options ................................................................................................................................ 28

13.2.3 Decision Matrix................................................................................................................... 28

13.2.4 Design Decision .................................................................................................................. 28

13.3 Gateway Processing Hardware ................................................................................................... 29

iii

13.3.1 Criteria ................................................................................................................................ 29

13.3.2 Options ................................................................................................................................ 29

13.3.3 Decision Matrix................................................................................................................... 29

13.3.4 Design Decision .................................................................................................................. 30

13.4 Gateway Power Supply ............................................................................................................... 30

13.4.1 Criteria ................................................................................................................................ 30

13.4.2 Options ................................................................................................................................ 30

13.4.3 Decision Matrix................................................................................................................... 30

13.4.4 Design Decision .................................................................................................................. 30

13.5 Server & Gateway Integration .................................................................................................... 31

13.5.1 Criteria ................................................................................................................................ 31

13.5.2 Options ................................................................................................................................ 31

13.5.3 Decision Matrix................................................................................................................... 32

13.5.4 Design Decision .................................................................................................................. 32

13.6 Server Hosting ............................................................................................................................ 32

13.6.2 Database Structure .............................................................................................................. 33

13.6.3 Web Application Framework .............................................................................................. 34

13.6.4 Gateway to Server Messaging Protocol .............................................................................. 36

13.6.5 Web Portal Programming Language ................................................................................... 37

13.6.6 User Interface ...................................................................................................................... 38

13.7 Design Decision Summary.......................................................................................................... 39

14 System Implementation............................................................................................................... 40

14.1 Technical Diagram & Component Explanations ........................................................................ 40

14.1.1 User Interfaces Explanation ................................................................................................ 41

14.1.2 Server Explanation .............................................................................................................. 41

14.1.3 Gateway Explanation .......................................................................................................... 41

14.1.4 Devices Explanation ........................................................................................................... 41

14.2 User Interfaces ............................................................................................................................ 42

14.3 Server .......................................................................................................................................... 47

14.3.1 Hardware ............................................................................................................................. 47

14.3.2 Software .............................................................................................................................. 47

14.4 Gateway ...................................................................................................................................... 50

Hardware ............................................................................................................................................. 50

Software .............................................................................................................................................. 50

14.5 Devices ........................................................................................................................................ 52

iv

14.5.1 Thermostat .......................................................................................................................... 52

14.5.2 Outlet Adapter ..................................................................................................................... 58

15 Integration, Testing, and Debugging ........................................................................................... 70

15.1 Testing Summary ........................................................................................................................ 70

15.2 Informal System Testing ............................................................................................................. 71

15.3 Informal User Interface Testing .................................................................................................. 71

15.4 Informal Server Testing .............................................................................................................. 72

15.5 Informal Gateway Testing .......................................................................................................... 73

15.6 Informal Devices Testing ............................................................................................................ 73

15.7 Informal Component Interaction Testing .................................................................................... 73

15.8 Formal Testing ............................................................................................................................ 74

16 Business Plan .............................................................................................................................. 75

16.1 Mission & Vision ........................................................................................................................ 75

16.1.1 Mission for the Company .................................................................................................... 75

16.1.2 Vision for the Company ...................................................................................................... 75

16.2 Market Survey ............................................................................................................................. 75

16.3 Market Sizes & Trends ............................................................................................................... 75

16.4 Potential Customers & Target Market ........................................................................................ 76

16.5 Competitive Strategy .................................................................................................................. 76

16.5.1 Differentiation ..................................................................................................................... 76

16.5.2 Response ............................................................................................................................. 76

16.6 SWOT Analysis .......................................................................................................................... 76

16.6.1 Strengths ............................................................................................................................. 76

16.6.2 Weaknesses ......................................................................................................................... 76

16.6.3 External Opportunities ........................................................................................................ 76

16.6.4 External Threats .................................................................................................................. 77

16.7 Cost Estimate .............................................................................................................................. 77

16.7.1 Development ....................................................................................................................... 77

16.7.2 Production ........................................................................................................................... 77

16.7.3 Break-even analysis ............................................................................................................ 79

16.7.4 Ratio Analysis ..................................................................................................................... 79

17 Conclusion .................................................................................................................................. 81

17.1 Future Tasks ................................................................................................................................ 81

17.1.1 User Interface ...................................................................................................................... 81

17.1.2 Server .................................................................................................................................. 82

v

17.1.3 Gateway .............................................................................................................................. 83

17.1.4 Devices ................................................................................................................................ 84

17.1.5 System Level ....................................................................................................................... 85

17.1.6 System Testing .................................................................................................................... 86

17.2 Summary ..................................................................................................................................... 86

17.2.1 Lessons Learned .................................................................................................................. 86

17.2.2 Project Status ...................................................................................................................... 87

18 Appendices .................................................................................................................................. 88

19 References & Bibliography ....................................................................................................... 110

vi

2 Table of Figures

Figure 1. Conceptual System Diagram .............................................................................................. 10 Figure 2. Component Interaction Diagram ........................................................................................ 13 Figure 3. Team Hours by Category .................................................................................................... 23 Figure 4. Team Hours by Person ........................................................................................................ 23 Figure 5. Team Hours by Category and Person ................................................................................. 24 Figure 6. Team Hours by Person and Category ................................................................................. 24 Figure 7. Team Hours by Category per Month .................................................................................. 25 Figure 8. Team Hours by Person per Month ...................................................................................... 25 Figure 9. Technical System Diagram ................................................................................................. 40 Figure 10. Welcome Page .................................................................................................................. 43 Figure 11. User Login Page ............................................................................................................... 43 Figure 12. Home Manager Page ......................................................................................................... 44 Figure 13. Home Manager Page continued ........................................................................................ 44 Figure 14. Outlet Adapter Advanced Settings ................................................................................... 45 Figure 15. Outlet Adapter Monitoring Display .................................................................................. 45 Figure 16. Thermostat Advanced Settings ......................................................................................... 46 Figure 17. Thermostat Scheduling Display ........................................................................................ 46 Figure 18. HomeAlive’s Database Structure...................................................................................... 47 Figure 19. Server’s program flow from UI end to Gateway End ....................................................... 49 Figure 20. Server’s program flow from Gateway end to UI End ....................................................... 49 Figure 21. Rabbit MQ Broker and Client System Diagram ............................................................... 50 Figure 22. HomeAlive Messaging Format (bytes) ............................................................................. 51 Figure 23. Gateway Software Diagram .............................................................................................. 52 Figure 24. Thermostat Device Conceptual Diagram .......................................................................... 53 Figure 25. Thermostat Device Schematic .......................................................................................... 54 Figure 26. Thermostat Software Diagram .......................................................................................... 55 Figure 27. Thermostat Feedback Codes Snippet ................................................................................ 56 Figure 28. Thermostat Command Codes Snippet .............................................................................. 57 Figure 29. Thermostat Abbreviated State Machine ........................................................................... 57 Figure 30. Outlet Adapter Device Conceptual Diagram .................................................................... 59 Figure 31. Outlet Adapter Device Schematic ..................................................................................... 62 Figure 32. Outlet Adapter Device Filter............................................................................................. 62 Figure 33. Outlet Adapter RMS to DC Calibration ........................................................................... 62 Figure 34. Outlet Adapter Device Voltage Calibration Curve ........................................................... 63 Figure 35. Outlet Adapter Device Current Calibration Curve ........................................................... 64 Figure 36. Outlet Adapter Device Photo ............................................................................................ 65 Figure 37. Outlet Adapter Software Diagram .................................................................................... 66 Figure 38. Outlet Adapter Feedback Codes Snippet .......................................................................... 67 Figure 39. Outlet Adapter Command Codes Snippet ......................................................................... 67 Figure 40. Outlet Adapter State Machine........................................................................................... 69 Figure 41. Statement of Income. ........................................................................................................ 78 Figure 42. Statement of Cash Flows .................................................................................................. 78 Figure 43. Ratio Analysis. .................................................................................................................. 79 Figure 44. Revenue Sheet – If Everything Produced In a Year Is Sold In That Year ........................ 80 Figure 45. Thermostat Device PCB Layout ....................................................................................... 88 Figure 46. Outlet Adapter PCB Layout .............................................................................................. 88 Figure 47. Break-Even Analysis ........................................................................................................ 98 Figure 48. Material Costs Sheet ......................................................................................................... 99 Figure 49. Material Costs Sheet (cont.)............................................................................................ 100

vii

Figure 50. Fixed & Variable Costs Sheet Break-Downs with Totals .............................................. 100 Figure 51. Fixed Cost of Goods Sold ............................................................................................... 101 Figure 52. Variable Cost of Goods Sold .......................................................................................... 102 Figure 53. Variable Cost of Operation ............................................................................................. 102 Figure 54. Variable Cost of Operation (cont.) ................................................................................. 103 Figure 55. Fixed Cost of Operation. ................................................................................................. 104 Figure 56. Cash Flow Statement (Quarterly) Year 1 ....................................................................... 105 Figure 57. Cash Flow Statement (Quarterly) Year 2. ...................................................................... 105 Figure 58. Cash Flow Statement (Quarterly) Year 3 ....................................................................... 106 Figure 59. Cash Flow Statement (Quarterly) Revenue Explanation. ............................................... 106 Figure 60. Ratio Analysis Calculation Year 1 & 2 .......................................................................... 107 Figure 61. Ratio Analysis Calculation Year 3 .................................................................................. 108 Figure 62. HomeAlive Prototype Devices ........................................................................................ 109 Figure 63. HomeAlive Prototype Thermostat ................................................................................... 109 Figure 64. HomeAlive Prototype Outlet Adapter ............................................................................. 109

viii

3 Table of Tables

Table 1. Course Instructors for Engineering 339/340 (2014-25) ......................................................... 4 Table 2. Project Milestones .................................................................................................................. 5 Table 3. Project Budget ........................................................................................................................ 6 Table 4. Honors Project Budget* ......................................................................................................... 7 Table 5. Senior Design Grand Total .................................................................................................... 7 Table 6. Functional System-Wide Requirements ................................................................................. 8 Table 7. Performance System-Wide Requirements ............................................................................. 9 Table 8. Functional User Interface Requirements .............................................................................. 14 Table 9. Performance User Interface Requirements .......................................................................... 14 Table 10. Functional Server Requirements ........................................................................................ 15 Table 11. Performance Server Requirements ..................................................................................... 15 Table 12. Functional Gateway Requirements .................................................................................... 16 Table 13. Performance Gateway Requirements ................................................................................. 16 Table 14. Functional Outlet Adapter Device Requirements .............................................................. 17 Table 15. Performance Outlet Adapter Device Requirements ........................................................... 18 Table 16. Functional Thermostat Device Requirements .................................................................... 19 Table 17. Performance Thermostat Device Requirements ................................................................. 20 Table 18. Work Breakdown Schedule Summary ............................................................................... 21 Table 19. Decision Matrix for Gateway OS ....................................................................................... 27 Table 20. Decision Matrix for Terminal Device to Gateway Communication Protocol .................... 28 Table 21. Decision Matrix for Hardware System for Gateway .......................................................... 29 Table 22. Decision Matrix for Gateway Power Supply ..................................................................... 30 Table 23. Decision Matrix for Server & Gateway Integration ........................................................... 32 Table 24. Decision Matrix for Server Hosting ................................................................................... 33 Table 25. Decision Matrix for Database Structure ............................................................................. 34 Table 26. Decision Matrix for Web Application Framework ............................................................ 36 Table 27. Decision Matrix for Web Portal Programming Language ................................................. 38 Table 28. Decision Matrix for User Interface .................................................................................... 39 Table 29. Design Alternative Selection Summary ............................................................................. 39 Table 30. HomeAlive’s Gateway and Database API Summary ......................................................... 48 Table 31. HomeAlive’s User Interface and Database API Summary ................................................ 48 Table 32. Testing Table Parameter & Their Descriptions.................................................................. 71 Table 33. Existing Competitors in the Market with Devices ............................................................. 75 Table 34. Features Comparison among Commercially Available Home Automation Systems ........ 75 Table 35. User Interface Tasks ........................................................................................................... 82 Table 36. Server Tasks ....................................................................................................................... 83 Table 37. Gateway Tasks ................................................................................................................... 84 Table 38. Devices Tasks .................................................................................................................... 84 Table 39. Thermostat Tasks ............................................................................................................... 85 Table 40. Outlet Adapter Tasks ......................................................................................................... 85 Table 41. System Level Tasks ........................................................................................................... 86 Table 42. System Testing Tasks ......................................................................................................... 86 Table 43. Lessons Learned Summary ................................................................................................ 87 Table 44. Whole System Testing ....................................................................................................... 89 Table 45. User Interface Testing ........................................................................................................ 90 Table 46. Server Testing .................................................................................................................... 91 Table 47. Gateway Testing ................................................................................................................ 92 Table 48. Devices Testing .................................................................................................................. 94 Table 49. Interface Testing ................................................................................................................ 97

ix

4 Abbreviations

ACL Access Control List

AMQP Advanced Message Queuing Protocol

CSS Cascading Style Sheets

DIY Do It Yourself

FTP File Transfer Protocol

GUI Graphical User Interface

HTML Hypertext Markup Language

HTTP Hypertext Transfer Protocol

JS JavaScript

JSP JavaServer Pages

LED Light Emitting Diode

M2M Machine-to-machine

MOM Message Oriented Middleware

MQTT MQ Telemetry Transport

MVC Model-View-Controller

ORM Object-Relational Mapping

PAN Personal Area Network

PCB Printed Circuit Board

PHP Hypertext Preprocessor

PPFS Project Proposal Feasibility Study

RDBMS Relational Database Management System

RF Radio Frequency

RoR Ruby on Rails

RTOS Real Time Operating System

SMTP Simple Mail Transfer Protocol

WAF Web Application Framework

WBS Work Breakdown Schedule

UI User Interface

1

5 Introduction

5.1 Report & Project Context

The HomeAlive home automation project is being worked on for Calvin College’s engineering

senior design course. The senior design course is intended to both give its students experience working

on a yearlong project and allow them to showcase what they have learned at Calvin. The capstone project

will last from September 2014 to May 2015, and it includes everything from brainstorming project ideas

through demonstrating the functionality of a prototype system. The project’s team members consist of

four electrical and computer engineering students: Andrew Jo, Okkar Moe Myint, Hezkiel Nanda, and

Jeremy Ward.

This final design report is intended to explain the home automation project’s purpose, scope, and

design implementations. It includes topics focused on scheduling, budgeting, technical decisions and

implementation details.

5.2 Problem Statements

There are four problems and opportunities that are related to this project: house modernization

rates, device inaccessibility, productivity improvements, and home monitoring.

House modernization rates refers to the problem that homes in the modern world are not taking

advantage of new technologies. This is caused by house longevity and high renovation costs; the home

automation system prototype should show that its mass production and installation would be possible at

an affordable price.

Device inaccessibility refers to the problem that many household devices are unnecessarily

difficult to interact with; it should be possible to control any electrical device one owns from anywhere in

the world. The home automation system prototype should show that secure access to home devices is

possible from remote locations.

Productivity improvements refers to an opportunity to introduce time-saving into the daily lives

of those who would use the home automation system. Integrating household devices and allowing them

to be automatically and remotely managed can increase ease-of-life and decrease wasted time.

Home monitoring refers to the opportunity to observe and control household devices more

effectively. The home automation system should allow for greater security and reduced energy

consumption by providing homeowners with a single interface for interacting with several devices. The

system should also address this opportunity by providing automatic device control scheduling and home-

mode settings.

5.3 Project Definition & Objectives

The HomeAlive project is to design a home automation system that allows homeowners to

control any electrical device in their house remotely, and to build a prototype model of that system. For

example, a system user could turn off her lights from work, let a friend into his apartment while on

vacation, setup a thermostat heating schedule using her phone, or perform countless other interactions

with any household device.

This home automation system should address the following three key opportunities and

consistently emphasize the design norms of justice, stewardship, and trust. The first opportunity is that

many modern household devices are unnecessarily inaccessible; it should be possible to securely interact

with these devices from afar. This relates directly to the design norm of justice by facilitating greater

independence for those with limited mobility. The second opportunity is that an intuitive interface could

save system users significant amounts of time and increase their daily productivity. The final key

2

opportunity relates to the design norm of stewardship and the enhancing of user’s control over the

resources used by their homes. By allowing actions such as thermostat scheduling and power

consumption monitoring, especially with the inclusion of automatic limits and real-time notifications, this

home automation system could help to reduce household energy costs. Furthermore, the design norm of

trust is critically involved in home automation systems because homeowners must be able to rely on the

system to behave both robustly and securely.

In order to address these opportunities, the HomeAlive team has designed a home automation

system that includes four components: devices, gateways, a server, and user interfaces. Devices are the

many electric household objects that can be monitored and controlled. There is a single gateway per

household; it is a small unit responsible for converting messages between radio signals and internet data

packets. The server, which is shared amongst all households, stores all of the HomeAlive data and

performs most of the system’s computational processing. Finally, the user interfaces include a website

and mobile phone applications. It is their responsibility to offer an intuitive and seamless portal for

interaction with the other parts of the system. Additional details on the four components and their

interaction can be found below.

5.4 Scope & Constraints

This home automation prototype is meant to demonstrate the proper functionality and scalability

of the system, not to include every desired system feature. There are countless features and devices that

the system could eventually incorporate, but in order to maintain proper project scope, only a single user

interface and two sample devices for two households have been designed. Determining an appropriate

scope for this project is perhaps the biggest challenge that was faced; however, the prototype includes:

four sample devices, two gateways, the server, a web portal user interface, and the communication

structures between them.

These components were selected to demonstrate appropriate system functionality because they

make up the communication network between users and the devices that are being controlled. Once this

structure is in place, additional devices, features, and user interface options can be added to the prototype

in order to continue development of the home automation system. Features considered out of scope for

this prototype due to a lack of financial and temporal resources include: registration of new households,

initialization of newly-purchased devices, mobile phone application user interfaces, and high-level

security.

3

6 Acknowledgments

There are several organizations and individuals that influenced this project and deserve both

credit and thanks. First, the Calvin College engineering department for its administrative and financial

contributions to the project. The department provided primary funding, quality workspaces, and

necessary equipment for the project; it also organized project showcase and set the final prototype due

date. Second, SpinDance Inc. for generously providing David van Geest as an industrial mentor. Also,

David himself for offering guidance on several technical issues and helping to clarify appropriate project

scope. Next, Eric Walstra for serving as an industrial consultant and providing assistance with technical

issues and project risk assessment. Additionally, Professor Mark Michmerhuizen for his consistent

feedback on schedule management and project deliverables. Also, Professors Brouwer, Kim,

VanAntwerp, Wunder, and Nielsen for their varied guidance. Finally, Chuck Holwerda and Bob

DeKraker for their help in securing supplies. Without these organizations and individuals, this project

would not have been possible.

4

7 Project Management

7.1 Team Organization

7.1.1 Team Advisor

Professor Mark Michmerhuizen is an electrical and computer engineering professor at Calvin

College and served as the project’s faculty advisor. His role was to provide guidance and evaluate project

deliverables. His signature was also required on all project purchases.

7.1.2 Course Instructors at Calvin College

The followings served as course instructors for ENGR-339 and ENGR-340 during this project.

Table 1. Course Instructors for Engineering 339/340 (2014-25)

Name Title

Mark Michmerhuizen Electrical Engineering Professor

Ned Nielsen Mechanical Engineering Professor

Jeremy VanAntwerp Chemical Engineering Professor

David Wunder Civil and Environmental Engineering Professor

7.1.3 Industrial Consultants

David van Geest is a Calvin College graduate from 2009. He works at SpinDance Inc, a

company that specializes in the development of technologies in the “internet of things” field and is based

in Holland, Michigan. David graciously offered his time and expertise while providing feedback on

system architecture details.

Eric Walstra works in Zeeland, Michigan at Gentex Corporation, a company that mainly

specializes in developing electronic products in the automotive and aerospace industries. Eric met with

the HomeAlive team twice and gave provided insights regarding project scope, task scheduling, risk

assessment, design testing, and project presentations.

7.1.4 Team Members

The HomeAlive team consisted of four members: Andrew Jo, Okkar Moe Myint, Hezkiel Nanda,

and Jeremy Ward. All four team members are electrical and computer engineering students at Calvin

College and expecting to graduate in May 2015.

7.2 Team Meetings

There were scheduled team meetings every Friday from 1:00 PM to 1:30 PM. These weekly

meetings gave the team a chance to go over the progress of the last week and to schedule new

assignments as needed. This meeting helped to hold the team members accountable and ensured the

project’s continued progress. In addition to these regular meetings, numerous other meetings were

scheduled at varying times as determined by availability and requirement.

7.3 Team Documentation & Task Organization

All of the team documents, including research notes, reports, diagrams, presentations, schedules,

budgets, and test results, are kept on a shared Microsoft OneDrive account. These documents are

accessible by all team members, allowing collaborative work to take place unhindered.

At first, the team assigned tasks using an online scheduling tool called Asana. Asana allows

reminders to be sent at preset times, and it allows team members to view each other’s progress on tasks.

This tool has proven itself very effective and useful in task organization, time management, and

5

adherence to schedule. Later, meeting frequencies increased to at least one per day and progress was

evident without using the Asana tool.

7.4 Schedule

In order to achieve its goals and make progress towards its milestones, HomeAlive broke down

their workload into manageable pieces and assigned weekly tasks to every team member. Progress on

tasks was reviewed every Friday, and the schedule was updated at this time. Large project milestones

were tracked using Microsoft Project and include items such as writing the PPFS and completing the

website. Weekly tasks were tracked using Asana and include shorter items that made progress towards

project milestones, for example adding photographs to the website. During the second semester,

HomeAlive decided not to use Asana because simple Word documents proved faster and more efficient

for dividing tasks. The primary reason that this become more effective than Asana was the dramatic rise

in meeting frequency; daily discussions about tasks reduced the need for group progress reports. This

approach to scheduling was implemented as described in the task specifications section below.

7.4.1 Milestones

This project had several notable milestones in its schedule as shown in Table 2. These were both

design process milestones, with estimated completion dates, and deliverable content milestones, with

assigned due dates.

Table 2. Project Milestones

Milestone Date

Oral Presentation 1 10/17/2014

PPFS Rough Draft 11/10/2014

Oral Presentation 2 12/3/2014

PPFS Final Draft 12/8/2014

Oral Presentation 3 3/2/2015

Prototype 4/01/2015

CEAC Review 4/24/2015

2nd Prototype 4/30/2015

Faculty Review 4/30/2015

Oral Presentation 4 5/5/2015

Testing 5/8/2015

Project Demonstration 5/9/2015

Final Website Update 5/11/2015

Final Draft Senior Design Report 5/13/2015

7.4.2 Schedule Management

The scheduling approach for this project involved a master WBS, task lists, estimations, and

reevaluations. Originally, a master WBS was generated which included large scale tasks. It incorporated

approximate time estimates and due dates. Since then, the process of listing tasks, estimating task

lengths, and then reevaluating previous estimations has been repeated each week. First, task lists were

generated, which included all relevant small and large scale tasks. Second, each of these tasks was given

an updated time-required estimation and goal due date. Third, estimations from the past scheduling

iteration were examined for accuracy in order to improve the scheduling estimation process.

Reevaluation also helped identify tasks that were behind schedule.

6

A HomeAlive member took on the role of schedule maintenance and also reminded other team

members to log their time in the team’s time tracking document. This time tracking tool was created by

the HomeAlive team in order to provide efficient and easy access for time logging throughout the year.

7.5 Budget Management

HomeAlive originally assigned Hezkiel Nanda to maintain its project budget. Later this role was

reassigned to Jeremy Ward because his tasks developing devices required frequent parts purchasing.

Jeremy then oversaw that each purchase was documented in the team’s budgeting information.

7.5.1 Sources of Funding

HomeAlive had one primary source of funding, the Calvin College engineering department’s

senior design fund. Calvin generously provided $531.12 to fund the HomeAlive project as seen in Table

3. Furthermore, they provided electrical equipment and components such as resistors, LEDs, transistors,

cables, and connectors. There was one secondary source of funding, the Calvin College engineering

department honors program. This budget was used in order to purchase hardware components amounting

to $207.35 as seen in Table 4. Two HomeAlive team members did their honors projects in order to

support the HomeAlive prototype. With these sources of funding, HomeAlive had sufficient financial

support for the prototype design and implementation.

7.5.2 Budget Details

The HomeAlive project cost totaled $738.47, including both funding sources, and the purchasing

breakdown can be seen in Table 3 - 5 below. It is important to note that the largest costs were purchasing

the commercial thermostats, XBee Pro modules, and AD736 ICs.

Table 3. Project Budget

Component Unit Price Quantity Line Total

Xbee Modules S1-1mW [1] $24.22 2 $48.44

Xbee Modules S1-60mW [2] $37.95 3 $113.85

Xbee USB Dongle [16] $29.95 1 $29.95

Xbee USB Dongle [16] $24.95 1 $24.95

Xbee Uno Shield [17] $18.94 1 $18.94

Xbee Uno Shield [17] $14.98 1 $14.98

Arduino Uno [18] $28.90 1 $28.90

Xbee Nano Shield [19] $9.90 2 $19.80

Arduino Nano [20] $14.99 1 $14.99

Arduino Nano [20] $14.80 1 $14.80

Arduino Stackable Header 8pin [21] $0.45 10 $4.50

9V Battery Connector [22] $1.88 1 $1.88

Thermostat [23] $50.77 1 $50.77

AD736 RMS to DC [24] $10.31 9 $92.79

DC Power Inverter [25] $3.03 4 $12.12

Relay [26] $4.48 2 $8.96

Current Transducer [27] $4.82 3 $14.46

AD628ARZ-R7CT [28] $5.23 1 $5.23

AD8436ARQZ [29] $10.81 1 $10.81

Total $531.12

7

Table 4. Honors Project Budget*

Component Line Total

Kill-a-Watt $28.22

Adafruit Tweet-a-Watt $87.25

Thermostat $52.98

Arduino Uno $38.90

Total $207.35 *Each Component Quantity Equals One.

Table 5. Senior Design Grand Total

Project Budget $ 531.12

Honors Project Budget $ 207.35

Grand Total $ 738.47

8

8 System Requirements

8.1 Requirements Categories

Requirements for the HomeAlive system can be classified as either functional or performance

requirements; they may also apply to either a specific component or the entire system. Functional

requirements refer to the capability to accomplish a certain task, for example the system must be able to

allow remote control of household devices. Performance requirements refer to the quality with which a

task is accomplished, for example the system must exhibit less than a two second delay between sending

commands and seeing their results. System-wide requirements are discussed in this section, and

component-specific requirements are discussed in greater detail below.

8.1.1 Functional

The functional requirements of the system as a whole are laid out in Table 6. They focus on the

system’s ability to accomplish the task of remotely monitoring and controlling household devices.

Table 6. Functional System-Wide Requirements

Requirement Description

Allows remote control of prototype devices

The main task of the system, to allow remote

control of household devices using a computer,

phone, or tablet

Allows multiple distinct devices

The system must support multiple devices per

household without any interference between them,

otherwise it is not useful

Allows multiple distinct households

The system must support multiple different

households without any interference between

them, otherwise it is only useful for one home

Scalable to multiple distinct user interfaces The system must be set up in such a way that

adding additional user interfaces is possible

Scalable to 256 devices per household

The system must be set up in such a way that

adding up to 256 devices per household is

possible

Scalable to numerous households

The system must be set up in such a way that

adding very large numbers of additional

households is possible

9

8.1.2 Performance

The performance requirements of the system as a whole are laid out in Table 7. They focus on

the system’s ability to accomplish the task of remotely monitoring and controlling household devices in a

way that is efficient and high-quality.

Table 7. Performance System-Wide Requirements

Requirement Description

End-to-end Delay Up (single) The system must exhibit a device to interface

delay of less than 2 seconds for a single message

End-to-end Delay Up (flood)

The system must exhibit a device to interface

delay of less than 3 seconds for a flood of

messages (greater than 2 messages per second for

10 seconds)

End-to-end Delay Down (single) The system must exhibit an interface to device

delay of less than 2 seconds for a single message

End-to-end Delay Down (flood)

The system must exhibit an interface to device

delay of less than 3 seconds for a flood of

messages (greater than 2 messages per second for

10 seconds)

Unexpected Component Shutdown: Gateway

The system must able to recover from an

unexpected shutdown of the gateway with

minimal lost messages and no extra user

interaction (besides restoring power to the

gateway)

Unexpected Component Shutdown: Devices

The system must be able to recover from an

unexpected shutdown of any device with minimal

lost messages and no extra user interaction

(besides restoring power to the device)

Unexpected Component Shutdown: Server

The system must be able to recover from an

unexpected shutdown of the server with minimal

lost messages and no extra user interaction

(besides restoring power to server)

10

9 System Architecture

9.1 Conceptual Diagram

This home automation system has been designed modularly as several components according to

both concrete and abstract distinctions between different parts of the system. At its broadest level, system

inputs are the user inputs: device control and system control. Broad system outputs include device

information and system information, which are displayed to users in order to allow them to make

informed control decisions. This can be seen in Figure 1, which also highlights the modular distinctions

described below.

Figure 1. Conceptual System Diagram

The system shown conceptually in Figure 1 is divided into components according to the tasks that

each is required to perform. Components include: devices, gateways, a server, and user interfaces.

Devices are the many electric household objects that can be monitored and controlled. There is a single

gateway per household; it is a small unit responsible for converting messages between radio signals and

internet data packets. The server, which is shared amongst all households, stores all of the HomeAlive

data and performs most of the system’s computational processing. Finally, the user interfaces include a

website and mobile phone applications. It is their responsibility to offer an intuitive and seamless portal

(A)

(B)

User Interfaces

Server

Gateways

Devices

11

for interaction with the other parts of the system. Additional details on the four components and their

interactions can be found below.

9.2 Component Summaries

9.2.1 User Interfaces Summary

HomeAlive user interfaces are responsible for providing homeowners with seamless and intuitive

methods to control and monitor their household devices. In order to do this, they must present available

information as it updates in the server’s database, and they must submit action requests to the server.

Additional information on inter-component communication can be seen below.

The system prototype demonstrates a website user interface, hosted by the same machine as the

server component. This website makes use of HTML, PHP scripts, and JS scripts in order to interact with

the database and provide a quality user experience. Additionally, it incorporates a login system in order

to match homeowners with their own devices.

9.2.2 Server Summary

The HomeAlive server performs the bulk of the system’s computational processing as it

maintains and manages a database. This database includes information on each device in every

household, and it offers user interfaces a channel to submit action requests. Management of the database

includes handling these action requests, and also device status updates, by appropriately adjusting

database values and generating new system messages.

The prototype server exists on a dedicated desktop computer; it uses a MySQL database for

information storage and PHP scripts for database management. These PHP scripts use multi-processing

techniques to ensure minimal delays in both server-gateway and server-user interface communication.

Server communication with gateway units is done using the internet-based Advanced Message Queueing

Protocol (AMQP); more information on inter-component communication can be found below.

9.2.3 Gateways Summary

HomeAlive gateways connect a household’s devices to the server by converting messages

between internet packets and XBee radio signals. There should be just one gateway per household, and it

should require little to no user interaction or maintenance. Without a gateway component in the

HomeAlive system, each controllable device would require an internet connection. Using gateways is

preferable for simplifying devices and isolating the HomeAlive system capability from home internet

network strengths. A gateway communicates wirelessly with all of its household’s devices and with the

server using an internet connection. Additional information on inter-component communication can be

found below.

The prototype gateway consists of a single-board Raspberry Pi computer and XBee radio chip,

which uses a serial USB dongle. The gateway runs using a multithreaded Java program that both converts

AMQP messages it receives from the server to XBee radio signals and converts XBee radio signals it

receives from its household’s devices to AMQP messages.

9.2.4 Devices Summary

HomeAlive devices are the electrical objects being monitored and controlled by home automation

system. There is no limit to the number of different possible devices; anything electric and in range of the

system XBee network could become a device. Each device can be broken up into two smaller conceptual

parts, the object portion and the control portion. The object portion is the actual thermostat, coffee maker,

door lock, or other electric machine. The control portion consists of the XBee radio and a

microcontroller.

12

The prototype system showcases two device types, a programmable thermostat and an outlet

adapter. The object portion of the first device is a purchased Honeywell programmable thermostat. Its

control portion consists of an Arduino microcontroller, XBee radio, and control circuit. The Arduino uses

the XBee radio to communicate with the rest of the HomeAlive system, and it is programmed to press

buttons on the thermostat object. The thermostat control circuit allows the Arduino to press the

thermostat buttons electronically and to read physical button presses as electronic signals. The object

portion of the outlet adapter is a circuit that is meant to be inserted between any standard American outlet

and the item plugged into it. This circuit is capable of toggling power to the plugged-in item, and it is

capable of measuring the power being used by that item. The control portion of the outlet adapter also

includes an Arduino microcontroller and XBee radio. These are used to communicate with the rest of the

HomeAlive system and to report the power measurement results.

9.2.5 Component Interactions Summary

The HomeAlive system’s devices, gateways, server, and user interfaces interact as a bidirectional

message-passing chain. In order to present homeowners with an interface that allows the monitoring and

control of their devices via an internet connection, it is first necessary to establish a communication link

between the user interfaces and devices.

This is done by granting the user interfaces web-access to the database storage on the server. The

server manages its database and sends appropriate messages to and from the gateways using AMQP. The

gateways are responsible for converting the messages that they receive between AMQP and XBee, and

then resending them in the new format. The XBee radio transceiver chips utilize the DigiMesh® protocol

and operate at 2.4GHz. Finally, each device uses an Arduino single-board computer for device control

and monitoring; the Arduino uses an XBee radio chip to communicate with its gateway. The chain of

communication can be seen in Figure 2 below.

13

Figure 2. Component Interaction Diagram

This diagram shows the HomeAlive system component interaction chain in a single direction; the

opposing direction is identical with reversed communication channels. The diagram displays two user

interfaces, the single server, and two households (each consisting of a gateway and set of devices).

14

10 Component Requirements

10.1 User Interface Requirements

10.1.1 Functional

Table 8 shows the functional requirements for the user interface. Most of the functional

requirements emphasize user-oriented viewpoints instead of a programmer’s perspective. The user

interface requirements focus on its ability to operate intuitively and be easy-to-use for the typical user.

Table 8. Functional User Interface Requirements

Requirement Description

Sends input forms

The user interface must have a form to send

commands. It has to be accessible across multiple

operating systems

Hides unselected features The user interface must hide unselected input

forms when they cannot be accessed correctly

Receives database data

The user interface must connect to the API server

to receive database information. Furthermore, it

must update every 2 seconds without interfering

with user inputs

Follows the original theme view

The user interface must follow the general shapes,

placements, and colors of the original theme to

make it easier to control by users

Alerts user for changes The user interface must alert users after

commands are sent and updated data is received

Accessible worldwide

The user interface must be accessible by

computers, tablets, and mobile phones from

anywhere in the world with an internet connection

10.1.2 Performance

Table 9 explains the performance requirements of the user interface. These requirements

emphasize the efficiency of the user experience and its ability run continuously for long periods of time.

Table 9. Performance User Interface Requirements

Requirement Description

User Interface Message Flood The user interface must be able receive message

from the server’s database at a rate of 500 ms per

message

User Interface Continuous Running The user interface must not decrease in

performance after long period of time

User Interface Basic Security The user interface must have basic security

features in place, for example logins

Knowledgeable User Testing (UI) The user interface must exhibit no unexpected

behavior (bugs) while being used by individuals

familiar with the HomeAlive system

Unknowledgeable User Testing (UI) The user interface must exhibit no unexpected

behavior (bugs) while being used by individuals

unfamiliar with the HomeAlive system

15

10.2 Server Requirements

10.2.1 Functional

The functional requirements of the server component are laid out in Table 10. They focus on the

server’s ability to communicate with the user interface and gateway, and also on its ability to provide the

necessary communication and data storage.

Table 10. Functional Server Requirements

Requirement Description

Handle status request from User Interface

The server must have a way to provide many

status data required for display in user interface

end.

Handle status request from the Gateway

The server must have a way to provide many

status data such as time and date required for

changing the device settings.

Handle request to register commands in the

database

The server must be able to store the commands

sent from user interface in the database.

Handle request to register status of the devices in

the database

The server must be able to store the status of the

devices relayed from the gateway in the database.

Host an AMQP server The server must be able to host an AMQP broker

and listen on its port.

Host a database The server must be able to host a MySQL

database and listen on its port.

Database structure The MySQL database setup in server must have a

logical relational database structure.

Message Integrity Maintained

The server must not modify any messages in any

manner and keep multiple messages distinct from

one another.

Send message to the gateway The server must send users’ commands to the

gateway after receiving them.

Receive message from the gateway

The server must be able to receive message

including status request and request to register

commands in a real time manner.

10.2.2 Performance

The performance requirements of the server component are laid out in Table 11. They focus on

the server’s ability to handle requests and communicate with both the user interface and gateway in a

timely manner and to store data in accurately.

Table 11. Performance Server Requirements

Requirement Description

Server Processing Speed The server must be able to handle multiple

messages per second without slowing down.

Server Operation Environment

The server must be able operate stably in a

relatively temperature regulated room. The server

must be able to withstand dust accumulated in the

room as well.

Server Operation Time The server must be able to operate constantly with

minimal downtime for maintenance.

Server Bad Message Handling The server must be able to discard bad messages

and continue operation without any downtime.

16

10.3 Gateway Requirements

10.3.1 Functional

The functional requirements of the gateway component are laid out in Table 12. They focus on

the gateway’s ability to accomplish the task of converting messages between the AMQP and DigiMesh

protocols.

Table 12. Functional Gateway Requirements

Requirement Description

Converts messages from AMQP to DigiMesh

The gateway must be able to convert a message

from the internet-based AMQP protocol to the RF

DigiMesh protocol.

Converts messages from DigiMesh to AMQP

The gateway must be able to convert a message

from the RF DigiMesh protocol to the internet-

based AMQP protocol.

Receives and sends DigiMesh messages

The gateway must be able to both send and

receive DigiMesh messages using an RF chip and

serial connection.

Receives and sends AMQP messages

The gateway must be able to both send and

receive AMQP messages using a preconfigured

RabbitMQ broker.

Message Integrity Maintained

The gateway must not change any messages in

any way and it should be able to keep multiple

messages distinct from one another.

10.3.2 Performance

The performance requirements of the gateway component are laid out in Table 13. They focus on

the gateway’s ability to accomplish the task of converting messages between the AMQP and DigiMesh

protocols in an efficient and high-quality way.

Table 13. Performance Gateway Requirements

Requirement Description

Gateway Processing Speed Up The gateway must send a converted AMQP message within

500 ms of receiving the original DigiMesh message

Gateway Processing Speed Down The gateway must send a converted DigiMesh message

within 500 ms of receiving the original AMQP message

Gateway Temperature of Operation The gateway must operate stably at typical room

temperatures

Gateway Heat Dissipation The gateway must be able to dissipate heat fast enough to

continue running indefinitely at room temperatures

Gateway Message Flooding Up

The gateway must be able to continue performing its role

when subjected to message flooding (greater than 2

messages per second for 10 seconds) coming from devices

Gateway Message Flooding Down

The gateway must be able to continue performing its role

when subjected to message flooding (greater than 2

messages per second for 10 seconds) coming from the

server

Gateway Bad Message handling

The gateway must be able to recognize and discard or

repair bad messages without ceasing to function as it is

intended

17

10.4 Device Requirements

10.4.1 Outlet Adapter

10.4.1.1 Functional

The functional requirements of the outlet adapter are laid out in Table 14. They focus on the

outlet adapter’s ability to be controlled and send information wirelessly.

Table 14. Functional Outlet Adapter Device Requirements

Requirement Description

Measure Power (VA) The outlet adapter must compute the power being

used by a plugged in appliance.

Turn On & Off The outlet adapter must be able to toggle its

output socket between the on and off states.

Remember previous settings & calibration

The outlet adapter must store the on/off status in

non-volatile memory to remember the setting and

calibrations upon power loss.

Bidirectional Communication

The outlet adapter must receive commands from

the user and also be able to send back status

information.

Wireless Communication

The outlet adapter must use wireless

communication to accomplish the message

sending and receiving.

Safe to use The outlet adapter must be safe to use and comply

with electrical safety standards.

Dimensions

The dimensions of the outlet adapter must be

reasonable for everyday use, smaller is better.

The adapter must dimensions resulting in a lesser

volume than 5x2x2 cubic inches.

18

10.4.1.2 Performance

The functional requirements of the outlet adapter are laid out in Table 15. They focus on the

outlet adapter’s ability to be controlled and send information wirelessly, while maintaining adequate

precision, accuracy, safety, and response times.

Table 15. Performance Outlet Adapter Device Requirements

Requirement Description

Outlet Adapter Power Rating

The outlet adapter must operate in the range of

0 A – 15 A and 0 – 130 V. Thus the power

range is roughly 0W – 2000 W.

Outlet Adapter Power Precision The outlet adapter should measure to the nearest

1 W.

Outlet Adapter Power Accuracy The error on measuring the power should be

W.

Outlet Adapter Response Time

Once the command to toggle the on/off state is

received, the appropriate action should be taken

within 250 ms.

Outlet Adapter Operation Environment

The outlet adapter must be able to operate

stably at typical room temperatures for long

periods of time.

Outlet Adapter Heat Dissipation

The outlet adapter must be able to dissipate heat

fast enough to allow 15 A of current at 120

Vrms to be sustained indefinitely. The Arduino

must also dissipate heat fast enough to continue

operation at room temperature indefinitely.

19

10.4.2 Thermostat

10.4.2.1 Functional

The functional requirements of the thermostat are laid out in Table 16. They focus on the

thermostat’s ability to be controlled and send information wirelessly.

Table 16. Functional Thermostat Device Requirements

Requirement Description

Physical Button Pressing

Pressing the buttons on the thermostat must

have the same effect as using the user interface.

The Arduino must read manual presses and

synchronize this change on its state machine.

Electrical Button Pressing

The Arduino must be capable of simulating a

manual button press by electrically pressing the

buttons.

Remember previous settings &

calibration

The thermostat must store all of its state

information in non-volatile memory to

remember its settings upon power loss.

Bidirectional Communication

The thermostat must receive commands from

the user interface and also be able to send back

status information.

Wireless Communication

The thermostat must use wireless

communication to accomplish message sending

and receiving.

Safe to use The thermostat must be safe to use and comply

with electrical safety standards.

20

10.4.2.2 Performance

The functional requirements of the thermostat are laid out in Table 17. They focus on the

thermostat’s ability to be controlled and send information wirelessly, while maintaining adequate

response times.

Table 17. Performance Thermostat Device Requirements

Requirement Description

Thermostat Operation Environment The thermostat must be able to operate stably at

typical room temperatures.

Thermostat Heat Dissipation

The Arduino must dissipate heat fast enough to

continue operating at room temperature

indefinitely.

Thermostat Processing Speed

The thermostat must process the incoming

messages and take appropriate action within

500 ms of receiving it.

Thermostat Action Speed

The thermostat should minimize the amount of

buttons being pressed to accomplish every

available action.

21

11 Task Specifications and Schedule

11.1 Work Breakdown Summary

The HomeAlive project was divided into several broad tasks, each with many subtasks, and

intentionally scheduled. These tasks included: determining scope, reports and communication,

developing each component, and system testing. The schedule was determined largely by project due

dates, but it all also accounted for peripheral conditions such as weeks with heavy workloads and team

member vacations. A general schedule and tasks list can be seen in Table 18.

Table 18. Work Breakdown Schedule Summary

Tasks & Milestones Due Date Due Date Type Date Completed

Project Choice 9/10/14 Assigned 9/8/14

Team Name & Facilities

Needs 9/15/14 Assigned 9/13/14

Presentation 1 10/17/14 Assigned 10/17/14

Scope Definition Several

Adjustments Repeating

9/15/14, 11/10/14,

4/11/15

Presentation 2 12/3/14 Assigned 12/3/14

PPFS 12/8/14 Assigned 12/8/14

Outlet Adapter

(early design) 12/8/14 Milestone 12/5/14

Thermostat Device

(early design) 12/8/14 Milestone 12/5/14

Gateway 12/5/14 Milestone 12/2/14

User Interface

(early design) 2/15/15 Milestone 2/15/15

Server & Database

(early design) 2/15/15 Milestone 2/15/15

Presentation 3 3/2/15 Assigned 3/2/15

Gateway Complete 3/5/15 Milestone 3/5/15

Thermostat Design

(except debug) 3/29/15 Milestone 3/29/15

User Interface

(except debug) 3/29/15 Milestone 3/29/15

22

Server

(except debug) 3/29/15 Milestone 3/29/15

Initial Prototype Testing 4/1/15 Milestone 4/11/15 (late)

Outlet Adapter Design

(except debug) 4/21/15 Milestone 4/21/15

CEAC Review 4/24/15 Assigned 4/24/15

PCB Fabrication 4/27/15 Milestone 5/7/15 (late)

Prototype Functional

Testing 4/29/15 Milestone 5/7/15 (late)

Faculty Review 4/30/15 Assigned 4/30/15

Prototype Completion 5/1/15 Milestone 5/8/15 (late)

Presentation 4 5/4/15 Assigned 5/4/15

Prototype Performance

Testing 5/6/15 Milestone incomplete

Prototype Demonstration 5/9/15 Assigned 5/9/15

Final Report 5/13/15 Assigned 5/13/15

* Many milestone due dates and completion dates are estimated

11.2 Time Tracking Report

It is also useful to view the HomeAlive project tasks and schedule from the perspective of hours

spent. The amount of time that the team spent was logged over the course of the project, and this data can

be viewed on a per-task, per-person, and per-month basis in the figures below. The timing information in

this section reflects project hours from 8/18/2014 to 5/13/2015. The total number of hours logged by the

team was 1875 hours. As seen in Figures 3 to 8, the majority of the team’s time was spent designing and

implementing the four major components: devices, server, gateways, and user interface. It is important to

note that the devices section required by far the greatest amount of time, partly because there were two

devices included in this category. Another section requiring a large portion of the hours spent is reports

and communication, which encompasses all speeches, reviews, and senior design night preparations.

Additionally, the hours spent each month on the project have been increasing steadily since August. The

hours logged by each time member have also been separated, and the graphs below show how each team

member had varying contributions for each month of the project. The final division of hours per team

member was approximately evenly distributed. More detailed hour tracking graphics are available on the

project website.

23

Figure 3. Team Hours by Category

Figure 4. Team Hours by Person

24

Figure 5. Team Hours by Category and Person

Figure 6. Team Hours by Person and Category

25

Figure 7. Team Hours by Category per Month

Figure 8. Team Hours by Person per Month

11.3 Scheduling Conclusion

The HomeAlive project took 1875 person-hours for four team members over the course of two

semesters. This time was allotted as roughly 101 person-hours for project scope discussions, 462 for

presentations and reports, 1077 for design and prototype development, 88 for prototype testing, and 147

for miscellaneous other tasks. A reactive scheduling approach was used to ensure the project was

completed before 5/14/15. However, it would have been better to spend greater amounts of time doing

preliminary system design early in first semester.

26

12 Design Norms

Design norms are topics that are meant to facilitate the application of core Christian beliefs into

the engineering design process. They provide guidelines for thinking about engineering in the holistic

context of life, as opposed to just the product being designed. The design norms that are most important

to this project were stewardship, justice, and trust. Together, they influenced the development of the

home automation system prototype by encouraging the careful consideration of how the system interacts

with people during each stage of its product life-cycle.

12.1 Stewardship

Stewardship is defined as conserving finite economic, human, and environmental resources while

preserving character and minimizing environmental degradation [6]. This home automation system

adhered to the design norm of stewardship in three ways. First, economic resources will not be

squandered in either the design or production of the system; care will be taken to use the available project

budget as effectively as possible. Second, the system was intended to conserve human resources by

increasing its consumers’ ease-of-life and improving the security of their homes. Finally, the system

included features that allow the monitoring and reduction of power consumption in consumers’ homes. In

this way, the system contributed to the conversation of environmental resources and helped to minimize

degradation.

12.2 Justice

Justice is defined as respecting the rights of all persons and considering all stake-holders, not just

users [6]. This home automation system adhered to the design norm of justice in two ways. First, the

system was designed to allow increased access to devices for people with limited mobility. By making

the control of home devices possible through a smartphone application, it was possible for many users to

achieve things alone that they previously needed help with. For example, a person who is paralyzed from

the waist down and living in a multilevel, non-handicap-accessible home, may now easily control devices

from any floor.

12.3 Trust

Trust is defined as ensuring that the design is trustworthy, dependable, reliable, and avoids

conflicts of interests [6]. This home automation system adhered to the design norm of trust in three ways.

First, the system functions entirely as intended and was not susceptible to inconsistent performance. This

is especially important for a home automation system because users quickly come to rely on it and a lot of

time is wasted doing things the old way if the system fails. Second, the issue of security was considered

throughout the design of the system. Security was important because unintended access to the system

could result in theft or other undesirable circumstances for the system’s owner. Finally, all conflicts of

interest by the people involved in the design of this system were avoided. No one participating in the

project has stake in any competing organizations or relationships with anyone in a contradictory

circumstance.

27

13 Design Criteria, Alternatives, Research, & Decisions

13.1 Gateway OS

13.1.1 Criteria

The operating system for the gateway should support real time operations in order to provide

seamless experiences to users. The operating system should also perform well under low hardware

configurations (e.g., 512 MB of RAM). In addition, it should support multiple messaging protocols. This

encourages compatibility and reliability within the design, which relates to the design norm of trust. For

the gateway OS, three different operating system were reviewed and evaluated as follows.

13.1.2 Options

13.1.2.1 UNIX variants – Raspbian

Raspbian is a Debian Wheezy based operating system with a Unix-like interface. It is developed

by the makers of Raspberry Pis. This alternative provides a familiar developing environment. In

addition, it is optimized to run smoothly under low hardware configurations. Raspbian has a large

number of active developers and is proven to run reliably on Raspberry Pi.

13.1.2.2 Windows - Windows Embedded

Windows Embedded is an embedded operating system developed for terminal devices with low

system configurations, such as small amount of memory. It allows real time operation and device

connectivity support is also provided. Developers in the home automation industry typically avoid the

windows platform because of its proprietary licenses status and other administrative difficulties.

13.1.2.3 Real Time Operating Systems – TinyOS

TinyOS is an RTOS written in nesC. It is developed jointly by the University of California, Intel

Corporation, and Crossbow Technology. TinyOS provides fairly simple interface for developers, and has

a rich support for many devices. This alternative is also well documented and well known in the RTOS

field.

13.1.3 Decision Matrix Table 19. Decision Matrix for Gateway OS

Criteria Weight Unix Variants Window

Embedded TinyOS

Reliability (RTOS) 30% 10 8 10

System Resource Requirements 25% 10 8 10

Reliability (Device Connectivity) 25% 10 5 10

Price 5% 10 10 10

Raspberry Pi Compatibility 15% 10 3 7

Totals: 100% 10 6.6 9.6

13.1.4 Design Decision

As depicted in Table 19, Raspbian appeared to best satisfy the weighted criteria for a gateway

OS. However, real-time operating systems were evaluated as similarly suitable and the chosen operating

system must also be compatible with the gateway processor, alternatives for which are examined below.

The Raspberry Pi processor choice influenced the usage of Raspbian, a Unix variant, for the gateway OS.

28

13.2 Terminal Device to Gateway Communication Protocol

13.2.1 Criteria

The communication protocol should have low latency times and low power consumption, in

accordance with the design norm of stewardship. In addition, the protocol should include security

measures in order to prevent any intrusion of the system. The communication protocol should also be

widely used in order to ensure reliability and continuous support in the future.

13.2.2 Options

13.2.2.1 ZigBee

ZigBee is a commonly used communication protocol in the home automation industry. It

provides low latency times and has low power consumption. The protocol itself has a security

architecture built in to it. However, increasing numbers of developers in home automation industry are

abandoning ZigBee due to its non-free, non-open source licensing status. ZigBee is available on XBee

Series 2 chips.

13.2.2.2 DigiMesh

DigiMesh is essentially identical to the ZigBee protocol; however it is available on XBee Series 1

chips as well.

13.2.2.3 Z-Wave

Z-Wave is a widely used communication protocol in home automation industry. It has low

latency times, low power consumption, and a decent security architecture. However, Z-wave chips are

manufactured only by the company Sigma Designs. Some developers avoid supporting the Z-Wave chip

protocol because of the company’s monopolistic nature.

13.2.2.4 Bluetooth

Bluetooth is a widely used communication protocol in home automation industry. It is secure

with low latency times and average power consumption. Bluetooth is widely used and supported by

numerous developers and products.

13.2.3 Decision Matrix Table 20. Decision Matrix for Terminal Device to Gateway Communication Protocol

Criteria Weight ZigBee &

DigiMesh Z-Wave Bluetooth

Reliability (Low Latency Time) 25% 10 10 10

Stewardship (Low Power Consumption) 5% 10 10 5

Trust (security) 19% 10 8 8

Trust (Devoted Developers) 11% 5 7 7

Range 40% 8 8 6

Totals: 100% 13.15 8.49 9.69

13.2.4 Design Decision

As depicted in Table 20, ZigBee and DigiMesh appeared to best satisfy the weighted criteria for a

device to gateway communication protocol. The team decided to use DigiMesh, a ZigBee-based

proprietary protocol developed by the company Digi. Both ZigBee and DigiMesh operate on the

purchased XBee RF chips and use the same frequency, 2.4 GHz.

29

13.3 Gateway Processing Hardware

13.3.1 Criteria

The gateway processor should support the OS alternative chosen above, this will dictate its

platform architecture and other features. The hardware system should provide the ability to flash the

board itself and have strong development tools. The processor should also align with the design norm of

stewardship by having a low power consumption. Additionally, the hardware should be compact, and be

readily available at a reasonable price.

13.3.2 Options

13.3.2.1 Arduino Uno

Arduino boards allow direct programming, but not the ability to flash the board. The Arduino

developer GUI is well-developed. The operational voltage for Arduino Uno is 5 Volts[16]. The current

draw varies based on the load attached to the board. The size of Arduino Uno is 75 mm x 53 mm, and

can be purchased easily at common electronic devices distributor with a price of $28.20[32].

13.3.2.2 Raspberry Pi – Model B

Raspberry Pi boards can be flashed; however, they only support operating systems that have been

optimized for use with their hardware. They have strong support and a widely used development

environment. The Raspberry Pi is powered by 5V micro USB, and the current usage also varies based on

the application. The Raspberry Pi measures 85.60mm x 56mm, and is also readily available at Calvin’s

engineering labs with no charge. It can also be purchased with $35[30].

13.3.2.3 BeagleBone Black

Beagle boards can be flashed; however, they only support operating systems that have been

optimized for use with their hardware. They have a fairly widely used development environment. The

operational voltage is 5V, and the current drawn varies based on the load attached to the board. The

BeagleBone Black board measures 86.36 mm x 53.34 mm, and is available at a price of $55[31].

13.3.3 Decision Matrix Table 21. Decision Matrix for Hardware System for Gateway

Criteria Weight Arduino Uno Raspberry Pi

Model B

BeagleBone

Black

Availability 13% 10 10 10

Reprogrammable 12% 8 10 10

Cost 13% 10 8 5

Development Environment Popularity 12% 10 8 8

Appropriate OS Support 22% 5 10 10

Power Consumption 15% 10 10 10

Size 13% 10 8 5

Totals: 100% 8.66 9.24 8.46

30

13.3.4 Design Decision

As depicted in Table 21 the Raspberry Pi satisfied the weighted criteria for gateway processor type.

Given this and their availability at no additional cost, a Raspberry Pi gateway processor was used.

13.4 Gateway Power Supply

13.4.1 Criteria

The Gateway should be portable, although it is designed for stationary use, in order to ensure that

it can be placed in various areas. It should also be reliable in the event of a power outage, as suggested by

the design norm of trust, and allow any battery operated device to continue communicating with the

system. Additionally, and in accordance with the design norm of reliability, the gateway should not

require any maintenance once installed.

13.4.2 Options

13.4.2.1 Battery Powered Only

A battery powered gateway will allow for portability if it becomes necessary to move the

gateway. Batteries would also give the gateway a limited increase in reliability in the event of a power

outage (i.e., the gateway would continue to function as long as the batteries last). However, using solely

batteries also significantly decreases reliability and increases maintenance needs because they must be

checked frequently.

13.4.2.2 Outlet Powered Only

A gateway powered only through an outlet would have low maintenance requirements. By

allowing the gateway to be plugged into the wall, this alternative provides power in the absence of a

power outage. This is highly reliable, but not portable. Each time the gateway would be moved, it would

power down and cause system communication loss. This alternative also is not reliable in the event of a

power outage.

13.4.2.3 Battery & Outlet Powered

A gateway that is both battery and outlet powered embodies the portability, and reliability of both

alternatives described above. This alternative allows the gateway to be easily relocated, and also makes

the already highly reliable gateway more trustworthy by reducing chances of communication loss in the

event of a power outage. However, the appropriate interaction between two unique power systems

involves increased design resource usage and monetary cost for the final prototype.

13.4.3 Decision Matrix Table 22. Decision Matrix for Gateway Power Supply

Criteria Weight Battery

Powered Only

Outlet Powered

Only

Battery &

Outlet Powered

Portability 10% 10 0 10

Reliability (Power Outage) 35% 10 0 10

Reliability (Maintenance) 35% 2 10 10

Complexity 20% 10 10 7

Totals: 100% 7.2 5.5 9.4

13.4.4 Design Decision

As depicted in Table 22, using both a battery and outlet power supply in the gateway best

satisfied the weighted criteria.

31

13.5 Server & Gateway Integration

13.5.1 Criteria

Including the server as integrated into the gateway or as hosted off site, separate from the

gateway, will not change the user interface of the system. Nonetheless, these design alternatives greatly

affect the quality of the whole system and, indirectly, the user’s experience. These alternatives should be

evaluated according to the criteria: reliability, latency, user support, stewardship of resources, and design

simplicity.

The design solution should build trust by minimizing the probability of system failure, and by

reducing both user involvement and the need for expert help in the event of a failure. The system should

be highly reliable.

The system should also minimize the latency time between a user interface command and the

target device’s response. This will improve user experience significantly.

Customer support should be considered during system design because it impacts the user’s

experience and perception of product quality. The alternative selected should maximize the ability for

customer support to handle incidents, such as a user needing help setting the system preferences or a third

party device not interfacing well with commands.

The design shall embody stewardship through efficient hardware usage. This will result in

relative cost savings, which can be passed on directly to customers. It will also result in decreased energy

consumption, an environmentally friendly aspect.

Finally, the design’s complexity shall be minimized, especially if doing so impacts the

stewardship of the design by reducing required human, material, and manufacturing resources.

13.5.2 Options

13.5.2.1 Unique Server & Gateway

In this alternative the gateway would still mediate bidirectional communication between the

devices and server through translating the information passed using different communication protocols.

But different from the alternative below, this one separates the database structure housing, database

operation performance and the processing of commands from the gateway to a server. This alternative

assumes that the server is not at the user’s house, but instead offsite where it is managed and maintained

by the system designers.

This alternative has a high reliability in the event of a system failure. The system designers

would be in charge of maintaining the server and would be more capable of doing so.

It is possible that this might have a high the latency for the response of commands sent by the

user. This would be due to the location of the server being offsite from the user’s house. There would

likely be a farther distance for commands to travel.

This design alternative gives the system designers great ability to support the users. If a user

needs help with system preferences or third party device support the system designers would be in a great

position to help because they are in control of the server.

Separating the server allows the system designers to effectively and efficiently manage the

database structure’s size. This also impacts the user because they would not have a limit in devices or

system preferences they may have.

32

Implementing a database structure with a server offsite will give greater flexibility in software

choices and low complexity in hardware implementation.

13.5.2.1.1 Server Integrated Into Gateway

This alternative integrates the server and its functions into the combined gateway. This would be

accomplished by embedding a database structure in the gateway and giving the gateway the capability of

processing commands and performing database operations.

Integrating the server into the gateway gives low reliability to the system if the server were to

crash due from high activity. The user would be required to reset anything needing resetting. This calls

for work or expertise out of the user and negatively affects the user’s experience.

With the server on gateway the latency of response time for the system would most likely be low,

but a user in need of help might have difficulties in receiving user support.

For this alternative, the size of the database cannot be changed. If a user has a large variety of

devices or system preferences, they will need a larger database structure to accommodate this. Thus, the

design would need to plan for the worst case and give a large allocation of memory. This alternative

would not allow for minimizing the server’s size and potentially wastes hardware. This would lead to an

increase in the products price.

This alternative has a high complexity in the system design. Creating a database structure on the

gateway might prove difficult and performing operations on an in house database structure might be

challenging.

13.5.3 Decision Matrix Table 23. Decision Matrix for Server & Gateway Integration

Criteria Weight Unique Server &

Gateway

Server Integrated Into

Gateway

Reliability 10% 10 0

Latency 10% 5 10

User Support 40% 10 3

Hardware Usage 20% 10 4

Complexity 20% 10 3

Totals: 100% 9.5 3.6

13.5.4 Design Decision

Table 23 clarifies the decision. Under the criteria listed, with the weights and scores given to

each alternative, the design should implement a server separate from the gateway.

13.6 Server Hosting

This design alternative assumes that the server is chosen to be separate from the gateway as

explained above.

13.6.1.1 Criteria

The server should not require high levels of maintenance, be capable of supporting required

program sizes, and be financially feasible given the project’s budget. It is directly connected to the design

norm of trust as server hosting has to provide reliable and transparent data.

33

13.6.1.2 Options

13.6.1.2.1 Server Rented Online

A rented server from an online provider would probably not take much time to implement (there

would be no need to set up the database structure) and would not be limited in size. But renting is

typically expensive and most likely not possible given the operating budget of the project.

13.6.1.2.2 Calvin College Server

Using one of Calvin College’s servers would not take much time to implement, but there may be

limitations on program size. This alternative would most likely be free; it would not require additional

financial investment to use one of the college’s already existing servers.

13.6.1.3 Decision Matrix Table 24. Decision Matrix for Server Hosting

Criteria Weight Server Rented Online Calvin College Server

Time to Maintain 10% 10 10

Size 10% 10 7

Cost 80% 0 10

Totals: 100% 2 9.7

13.6.1.4 Design Decision

As depicted in Table 24 using a Calvin College server to host the home automation system’s

server met the weighted criteria.

13.6.1.5 Design Decision Amendments

The team first decided to user Calvin College’s server to host the HomeAlive server programs.

However, the server was later moved to a team member’s personal Linux computer off-campus. This

option allowed for the configuration of the system as required and eliminated the need to be compliant

with Calvin’s eduroam policies and restrictions.

13.6.2 Database Structure

13.6.2.1 Criteria

The database structure must perform its duty well in order to maintain consumer trust. The three

basic criteria for the database structure are reliability, database management efficiency, and database

development efficiency. Reliability is an important consideration when the system will require multiple

data access attempts simultaneously. Management efficiency directly affects how fast the HomeAlive

system handles data storing and loading. However, comparing database structure performance times is

complex. The final criterion involves project scope and consists of designer familiarity with the

database’s programming language. All of the three of these criteria are associated with the design norm

of trust.

13.6.2.2 Options

13.6.2.2.1.1 SQL Server

Microsoft SQL server was first launched for commercial use and could only be used by machines

running a Windows operating system. SQL Server is the first database structure that became widely

known and has a long history of use beginning when it was released in 1989. This server-based database

34

structure uses Microsoft relational database management system (RDBMS). Although implemented in

C++, SQL supports the .Net, Java, PHP, Python, Ruby, C++, and Visual Basic programming languages

[7].

13.6.2.2.1.2 MySQL

MySQL was developed by Oracle in 1995. It is a server-based, open-source database structure,

and it is compatible with Linux, Windows, OS X, Solaris, and FreeBSD operating systems. MySQL uses

client server and an open source RDBMS. Although implemented in C and C++, MySQL supports C, C#,

C++, Java, PHP, Python, and other programming languages [8,14].

13.6.2.2.1.3 Oracle DB

The Oracle database structure was first published in the year 1980 for commercial use. Oracle

uses RDBMS to manage its data storage, and it is compatible with Linux, Windows, OS X, Solaris, HP-

UX, AIX, and z/OS operating systems. Although implemented in C and C++, it supports C, C#, C++,

Python, PHP, Ruby, Visual Basic, and other programming languages [9].

13.6.2.3 Discussion

Microsoft’s SQL Server has a significant downside if HomeAlive uses an operating system

besides Linux, OS X, or Solaris for its server. In terms of reliability, all of the database structures

discussed are widely used and famous for their accuracy; however, the Oracle database has the longest

tradition of reliable widespread use (30 or more years). When considering development efficiency,

Oracle and MySQL support the languages C and C++ which are familiar to system designers [1]. (need to

fixed)

13.6.2.4 Decision Matrix Table 25. Decision Matrix for Database Structure

Criteria Weight SQL MySQL Oracle

Reliability 70% 9 8 10

Easy to Manage 30% 7 8 8

Totals: 100% 8.4 8.4 9.8

13.6.2.5 Design Decision

As depicted in Table 25, the Oracle database structure seems to best meet the weighted criteria.

Selecting it as the database structure is advised. However, SQL and MySQL were evaluated to be

suitable options if any problems arise with Oracle.

13.6.2.6 Design Decision Amendment

MySQL was proven to be more reliable and readily available. Thus, a MySQL database was used

instead of an Oracle database.

13.6.3 Web Application Framework

13.6.3.1 Criteria

The Web Application Framework (WAF) is the software that will be used to design the web

portal and other web services associated with this system. The WAF has to follow the design norm of

trust as they will integrate two systems with a reliable and transparent connection. When choosing a

WAF, there are three key criteria: protocol compatibility, development efficiency, and unique feature sets.

Protocol compatibility is important because the web framework should be able to effectively

35

communicate with the remainder of the HomeAlive system. Developer efficiency is important due to

project scope considerations and is usually based on designer familiarity with the supported programming

language. Routing and templates are also issues common to web framework evaluation [10].

13.6.3.2 Options

13.6.3.2.1 Ruby

Ruby on Rails (RoR) an open source WAF built in the widely used programming language Ruby,

uses an ActiveRecord model-view-controller (MVC), which allows it to represent its data in various

ways. RoR manages MVC using push techniques, and its object-relational mapping (ORM) data

conversion tool is also ActiveRecord. RoR adds inheritance and associations features; it also incorporates

testing, database migration, security assurances, template generation, caching, and form validation

frameworks. This alternatives security framework is plug-in [11, 12].

13.6.3.2.2 Python

Django is a commonly used, open-source WAF built in the programming language Python.

Django uses a full stack type MVC and has its own integrated ORM. Like most WAF models, Django

supports testing, database migration, security assurances, template generation, caching, and form

validation. Django’s security framework uses access control list (ACL), and its template and form

validation frameworks use Python. The caching framework that Django uses is a dynamic one [10].

13.6.3.2.3 Java

There are several WAF models built in the Java programming language, but the most widely used

one is Spring. The Spring WAF is one of the most commonly used open source frameworks. Its MVC is

a push-typed one, but it is not highly unique. The ORM that Spring uses is called Hibernate; it solves

ORM impedance mismatch problems. Like most Java-based WAF models, Spring does not include a

database migration framework. Spring’s security framework is unique, like its unit-testing test

framework. JavaServer Pages (JSP), software that dynamically generates web pages, is used as its

template framework. Spring’s caching framework employs the Echache technique, and this validation

framework utilizes Bean Validation strategies [13,14].

13.6.3.2.4 PHP

The acronym PHP originally stood for Personal Home Page, but it became Hypertext

Preprocessor since it is highly related to HyperText Markup Language (HTML). PHP is usually located

on the server-side of web processing. The MVC that PHP uses is similar to the one used by Ruby. There

are many ORM libraries available for PHP, most notably are the data mappers ORM, PDO/ADO, and

Doctrine. Most PHP libraries are fully documented and have complete tutorials available for free. The

framework that PHP offers is adaptable and well-developed. [17]

13.6.3.3 Discussion

The WAF model associated with the Java programming language is the most familiar to system

designers, giving it the highest expected development efficiency. On the other hand, PHP is highly

compatible with HTML files that are used for HomeAlive marketing websites, and they are also similar to

the familiar C++ programming language. Compatibility considerations must be examined in tandem with

server choices. The Spring and Django WAF models include several unique features which adds to both

their flexibility and complexity.

36

13.6.3.4 Decision Matrix Table 26. Decision Matrix for Web Application Framework

Criteria Weight Ruby Python Java PHP

Familiarity 60% 7 8 9 9

Compatibility 30% 8 8 8 10

Uniqueness 10% 8 9 10 9

Totals: 100% 7.4 8.1 8.8 9.3

13.6.3.5 Design Decision

As depicted in Table 26, the WAF model that seems to best meet the weighted criteria is PHP

WAF. However, each alternative evaluated as similarly suitable and decision matrix estimates require

refinement before a WAF is chosen.

13.6.4 Gateway to Server Messaging Protocol

In order for the gateway to properly function it must consolidate wireless communication from

many devices into a single internet-based communication path. It includes two critical components: a

wireless communication module and an internet-enabled processor. The communication protocol for

messages passed between the gateway and the server will be chosen from several alternatives as discussed

below. The messaging protocol from gateway to the server has to utilize the design norm of trust.

13.6.4.1 Criteria

Each messaging protocol should be evaluated according to its reliability, computational

requirements, compatibility, and complexity. Reliability refers to the protocol’s assurances that its

messages are transmitted successfully, decoded accurately, and received from a trusted source. The

reliability of the system connects to the design norm of trust. Computational requirements refers to the

idea that minimal hardware and software resources should be needed in order to utilize this protocol; its

primary purpose is to transmit information, not process it. Compatibility refers to the fact that the

protocol must be capable of interacting with both the wireless communication module and the gateway’s

main processor. Finally, complexity refers to choosing the simplest available alternative that satisfies the

preceding criteria satisfactorily.

13.6.4.2 Options

13.6.4.2.1 MQTT

One protocol option for internet-based messaging is MQ Telemetry Transport (MQTT). It was

designed for machine-to-machine (M2M) integration and mobile applications by focusing on the

minimization of required computational resources and reliable assurances of message delivery [15]. It

utilizes established connections between publishers and subscribers in order to perform message passing.

13.6.4.2.2 AMQP

Advanced Message Queuing Protocol (AMQP) allows messaging providers to send information

to a message-oriented middleware (MOM) broker by implementing an open standard application layer.

MOM supports messaging distribution over similar platforms. AMQP is utilized for M2M

communication, and it is similar to the familiar Hypertext Transfer Protocol (HTTP), File Transfer

Protocol (FTP), and Simple Mail Transfer Protocol (SMTP). It utilizes established connections between

clients and brokers in order to perform message passing.

37

13.6.4.3 Design Alternative Selection

AMQP was first chosen for HomeAlive’s internet-based messaging protocol based on industrial

consultant’s recommendation. In addition, AMQP was proven to be more feature-rich than MQTT. This

was also based on the fact that the Raspberry Pi processor has the required complexity to support an

AMQP application, which offers greater capabilities than the MQTT protocol.

13.6.5 Web Portal Programming Language

In order to provide a web portal user interface that is most ideal, it has to satisfy the criteria

below. In addition, a programming language for designing the software interface must be chosen.

Several alternative languages are identified and evaluated in this section.

13.6.5.1 Criteria

Each web portal programming language should be evaluated according to its compatibility,

graphical capability, runtime performance, and developer familiarity. Compatibility refers the fact that

the web portal must be able to interact with the database system and interface protocols that are chosen

when designing the server. Graphical capability refers to ease with which the programming language can

be used to develop intuitive and aesthetically appealing user interfaces. Runtime performance refers to

the efficiency and speed with which programs written in the language typically run. Finally, developer

familiarity refers to selecting the language that is best known by the web portal developer and also

satisfies the preceding criteria.

13.6.5.2 Options

13.6.5.2.1 Ruby on Rails

One programming language option for the web portal user interface is Ruby on Rails. Its chief

advantage seems to be an integrated web framework that facilitates the development of website user

interfaces. The connectivity with the database is easy to use. Ruby serves as the server-side, while all the

client-side is handled by JavaScript (JS). The graphical capability mostly depend on the JS handling.

13.6.5.2.2 PHP

Another programming language option is the language PHP, which is often used in back-end or

server-side web portal contexts. PHP has a noteworthy integration with the MySQL database language

and is easily linked to HTML and CSS files. It is also important to recognize that PHP is easy to connect

with JS in order to provide high-quality graphics.

13.6.5.2.3 Java

A third option is the Java programming language. It is commonly used as a server-side

development language for web development. Java’s connectivity with the database systems is easy to

learn and Java frameworks allow HTML integration for graphical web interfaces. Finally, the inherent

connection to JS will help the user interface display the necessary visuals for system data.

13.6.5.3 Discussion

PHP is a free software released under PHP license. The syntax is very similar to the C based

languages. Since HomeAlive members have previous experiences in coding with C++, PHP provides the

highest familiarity. Java is also a familiar language as it is the basic object oriented programming. In

terms of compatibility, PHP is compatible with many architectures and operating systems. It runs

smoothly on Windows, Linux, and Macintosh systems.

38

13.6.5.4 Decision Matrix Table 27. Decision Matrix for Web Portal Programming Language

Criteria Weight Ruby Java PHP

Familiarity 60% 7 9 9

Compatibility 30% 8 8 10

Performance 10% 7 8 9

Totals: 100% 7.3 8.6 9.3

13.6.5.5 Design Decision

PHP was selected according to the matrix shown in Table 27. However, it is important to note

that this web portal programming language will be paired with JS, HTML, and CSS on the client-side.

13.6.6 User Interface

13.6.6.1 Criteria

The user interface is the point where product and consumer interact, so it plays a large role in the

user’s experience and HomeAlive seeks to maximize the quality of that experience. This project is being

conducted with limited resources including time and cost. In light of this, the user interface alternative

that is selected should maximize quality of experience while remaining within project budget and scope.

The criteria of the user interface is highly connected with the design norm of trust, users should

experience transparency and consistency when using the user interface.

13.6.6.2 Options

13.6.6.2.1 Web Portal Only

The web portal would use project resources efficiently by building upon an already required web

framework. Developing a web portal interface that is intuitive for users may present a challenge, and the

user experience for a web portal is not seamlessly available in daily life.

13.6.6.2.2 Mobile Application Only

A mobile phone application user interface would require development of an Android or an iOS

application using Java or objective C. Developing a mobile application may cost money to gain a license

to use an environment provided by the related OS. Designing a GUI of this nature would be time

consuming, due to team inexperience with mobile development. A mobile application would be a great

asset for maximizing the user’s experience; it would serve as an important part of the system’s overall

accessibility.

13.6.6.2.3 Web Portal & Mobile Application

Developing both the web portal and mobile application interfaces, in comparison to only doing

one, would increase the time required and possibly the cost of this project, but would significantly

increase the user’s quality of experience.

39

13.6.6.3 Decision Matrix Table 28. Decision Matrix for User Interface

Criteria Weight Web Portal Only Mobile

Application Only

Web Portal &

Mobile App.

Quality of User’s

Experience 20% 2 8 9

Cost 5% 10 2 2

Time Required 75% 9 5 1

Totals: 100% 7.65 5.45 2.65

13.6.6.4 Design Decision

As depicted in Table 28, developing only a web portal user interface for the system best met the

weighted criteria. However, it is important to note the criteria weights favor scope considerations far

more than the quality of user’s experience and cost criterion.

13.7 Design Decision Summary

Table 29 summarizes all of the design alternative selections discussed above.

Table 29. Design Alternative Selection Summary

Design Alternative Selection

Gateway OS and Networking Raspbian

Terminal Device to Gateway Communication Protocol DigiMesh

Gateway Processing Hardware Raspberry Pi

Gateway Power Supply Battery & Outlet Powered

Server & Gateway Integration Unique Server & Gateway

Server Hosting An independent Server

Database Structure MySQL

Web Application Framework PHP

Internet-based Messaging Protocol AMQP

User Interface Web Portal Only

40

14 System Implementation

14.1 Technical Diagram & Component Explanations

The conceptual system diagram explained above can be expanded into a technical system

diagram as seen in Figure 9. The technical diagram shows greater detail within each system component

from the conceptual diagram, by separating them into even smaller modules. These modules are

categorized as either hardware or software, and the interface protocols between them have been explicitly

declared.

Figure 9. Technical System Diagram

This diagram shows system component separation into hardware and software modules. It also

clarifies that interface protocols will be needed for communication between components.

41

14.1.1 User Interfaces Explanation

The user interfaces component, seen in Figure 9 is separated into two distinct software modules: a

web portal client and a smart phone application. The web portal client describes any internet browser that

is accessing the server’s web portal module. The phone application functions similarly but interacts

directly with the server’s database manager API protocol; it uses a GUI that has been optimized for

smartphone screens. Both of these modules allow for users to interact with the home automation system.

The UI Webserver module of the server is the code for the website UI, hosted by the server machine, and

is referred to as part of the user interface throughout this report.

14.1.2 Server Explanation

The server component, seen in Figure 9, is separated into five software modules. The basis of the

server is the database storage module which is responsible for containing device and system information.

This software element is important because the storage of device information enables actions to be taken

based on the past, instead of just the present. Additionally, the storage of system information is crucial to

maintaining device pairings and security logins. Next, there is a database manager software module

which is responsible for controlling reads, writes, and searches of the database as it communicates with

the gateway via an AMQP broker. The manager controls the HomeAlive system and the broker simply

coordinates messages between its gateway and server clients. Finally, there is a user interface to database

API module which adds a layer of abstraction between the webserver and the database. This is important

to facilitate the adding of more user interface options in the future.

14.1.3 Gateway Explanation

The gateway component, seen in Figure 9, is separated into two hardware modules, their

associated software modules, and two interface protocols. The first main hardware module is the RF

communication chip. It is responsible for relaying information from all of the devices to the gateway’s

processor, and for relaying information from the gateway’s processor to the correct individual device.

The second main hardware module is the processor which is primarily responsible for translating

messages received from the RF communication chip into internet-based messages, these are destined for

the server’s database manager module. The software module running on the RF communication chip

includes basic configurations for the chip. The software module running on the processor includes both a

small operating system and a networking structure that allows it to access the internet and pass messages

to the server.

The two interface protocols include server communication and wireless RF communication. The

server communication protocol allows the processor to make and receive understandable requests from

the server. Next, the wireless communication interface protocol module is meant to show that the

information being relayed by the RF communication module has a logical structure imposed on it.

14.1.4 Devices Explanation

The devices component, seen in Figure 9 is separated according to each device; each device is

then separated further into hardware and software modules. Hardware modules for each device include

the essential device hardware, control circuitry, a microprocessor, and an RF communication chip. The

essential device hardware is comprised of the actual lighting system, thermostat, coffee machine, or other

household object. The control circuitry is attached to the essential device hardware in such a way that it

can execute the desired monitoring and controlling of the household object. The microprocessor is the

master of the device and interprets RF messages before taking the appropriate action using control

circuitry. It has the device’s main software module which is integrally connected to the microprocessor’s

ability to read and drive electrical signals on IO pins. Finally, the RF communication chip is responsible

for relaying information wirelessly from the control circuitry to the gateway, and from the gateway to the

42

control circuitry. It also hosts the device component’s other software module, which includes basic

configurations for the wireless communication chip.

14.2 User Interfaces

The system implementation of the user interface relies on HTML, CSS, PHP, and JS scripts.

First, the HTML structure provides the display of the website and its user input forms. These forms use

the POST method because it is more reliable and secure than the only alternative, the GET method.

Second, the combination of HTML and CSS makes the user interface display more colorful and

aesthetically pleasing. The placement and shapes of all objects are defined inside the CSS file; all of the

minimalist HTML and CSS files are originally designed by HTML5 Alpha Themes (although they have

been significantly altered). The HTML and CSS combination works well with Windows, Android, and

Blackberry operating systems, but iOS has notable incompatibilities.

Third, the PHP language is used because it provides familiar programming styles and higher

security than simple HTML files. The HTML files used for the user login pages and home manager

pages are embedded inside PHP scripts using the echo function. In this way, users can only look at the

printed result of the PHP script. This is a standard security protocol used to prevent unwanted user

permissions for viewing configuration files and database values that the PHP files utilize. The open-

source module that was used for developing the login page is called userCake, and it provides a simple

and manageable login system that connects directly to the server’s MySQL database. This module also

includes logout, sign up, forgot password, and email activation features. Fourth, the JS script files are

used as an additional programming tool that works flawlessly with HTML. Multiple JS script files are

integrated in order to provide rules for checking time, hiding unselected features, getting live data, and

other required functions. The only two libraries involved in the JS scripts are the default JS library and

the popular jQuery library. These are relevant to achievement of the user interface’s component

requirements. Finally, the JSON add-on is used in these JS scripts to attain undisturbed send and receive

capabilities. The following figures (Figures 10 to 17) show screenshots of the user interface’s final

appearance.

43

Figure 10. Welcome Page

Figure 11. User Login Page

44

Figure 12. Home Manager Page

Figure 13. Home Manager Page continued

45

Figure 14. Outlet Adapter Advanced Settings

Figure 15. Outlet Adapter Monitoring Display

46

Figure 16. Thermostat Advanced Settings

Figure 17. Thermostat Scheduling Display

47

14.3 Server

The server component was integral to HomeAlive system, and implemented using many sub

system components.

14.3.1 Hardware

A desktop computer with an Intel Core i5 processor and a 4GB of RAM was used to install all

required software. The server was physically located at engineering building while in development stage,

and later moved to Okkar’s house for universal access. The desktop computer with mentioned

configuration provided more than adequate system for HomeAlive. The processing speed was 2.7 GHz

and data storage capacity was 500 GB. It also had an Ethernet cable interface with a maximum transfer

speed of 1Gb/s to handle incoming internet traffic.

14.3.2 Software

HomeAlive used an Ubuntu server as a base system for HomeAlive’s server. The software

implementation of server involved four main area: a database server, a device and database API, a User

Interface and database API, a gateway and database manager and an AMQP server.

14.3.2.1 Database Server

A database server for storing system related data was set up using a MySQL database over an

existing Ubuntu server. MySQL server listens incoming internet traffic on port 3306. The relationship

between tables were shown in Figure 18.

Figure 18. HomeAlive’s Database Structure

14.3.2.2 API for communication between a Gateway and a database (Gateway – API)

Server was required to provide a way to communicate between a Gateway and a database. In

order to do so, functions written in PHP were used as API. API eliminates the need for the Gateway to

know the structure of the database or the need for database to know which gateway to communicate to.

48

For example, a gateway sends a status update from a thermostat. By using the API provided, the gateway

does not need to know the details of table and rows that need to be updated. The API handles those

details. This approach allowed HomeAlive team to design modular system easily with minimal

dependent on other components of the system. The followings were the main API functions used.

Table 30. HomeAlive’s Gateway and Database API Summary

Name Purpose

sendCmdToHub() It periodically checks new user commands stored in the database

and send the commands to the gateway using the appropriate

AMQP queue for the specified household.

registerStatus($mysqli,$raw_data) The function insert or update the rows in table using the device

and house identification number included in raw data.

14.3.2.3 API for communication between a User Interface and a database (UI-API)

Server was also required to provide a way to communicate between HomeAlive’s user interface

and tis database. API approach was again used. The UI would call the functions to store the user

commands in the database. Similarly, the UI would call the function to get the status of devices. All API

function were written in PHP. The followings were the main API functions used.

Table 31. HomeAlive’s User Interface and Database API Summary

Name Purpose

registerUserInput ($Device_ID,

$House_ID, $Cmd)

The function inserts or updates commands in the appropriate table

given the device and house identification numbers.

getCurrentStatus

($Device_ID,$House_ID,$Cmd)

The function returns the current status of the specific device from

the specified household stored in the database.

14.3.2.4 A Manager for communication between a gateway and a database (Gatway-Manager)

A manager simply referred to a standalone function that is constantly monitoring the changes in

the system and taking action as necessary. For HomeAlive system, a function with infinite loop that was

calling the API for communication between a gateway and a database was used. The function was also

written in PHP.

14.3.2.5 RabbitMQ Server and Broker

A RabbitMQ server is an AMQP server and listens incoming traffic on port 5672. It was readily

available through Ubuntu software repository. The configuration of the server was modified to meet the

requirements of the HomeAlive system. The Exchange and Queue were set up according to the Figure

21.

The RabbitMQ client communicates with the RabbitMQ server residing on the server machine as

described above. When receiving AMQP messages, the client is pushed by the broker and its received

message handler is called. This handler then calls registerStatus API function to update the contents of

the device table. When sending AMQP messages, the client simply publishes the message content to the

appropriate queue (see above); from there the broker distributes it to the server manager. This structure is

diagramed below in Figure 21.

14.3.2.6 Flow diagram of the software implementation

The following figure illustrates the simplified flow of server software implementation. Figure 19

represents the flow of server programs starting from UI-API to RabbitMQ broker. Figure 20 shows the

reverse flow of server programs from RabbitMQ Broker to UI-API.

49

Figure 19. Server’s program flow from UI end to Gateway End

Figure 20. Server’s program flow from Gateway end to UI End

UI- API

•registerUserInput() : register the incoming user input in the database

Database

•stores data in the appropriate table

Gateway Manger

•notice the change and call API

Gateway - API

•sendCmdToHub() : send the command to the appropriate gateway

RabbitMQ Broker

•relays the command using AMQP

RabbitMQ Borker

• receives AMQP message from the gateway

Gateway Manager

• Manager notice the message and call API

Gateway - API

• registerStatus() : put the message in the database

Database

• store the incoming message

UI-API

• getCurrentStatus() : get the current status of the device

50

Figure 21. Rabbit MQ Broker and Client System Diagram

14.4 Gateway

Gateway hardware was purchased and then carefully configured. Gateway software was written

nearly from scratch, utilizing just the Java Simple Serial Connection (jssc) and RabbitMQ libraries.

Hardware

The gateway hardware was implemented using a purchased single-board computer called a

Raspberry Pi. This computer has the required processing power to be capable of converting messages

between AMQP and DigiMesh at the required speeds. Furthermore, it has USB serial ports which allow

it to easily communicate with a wireless RF communication XBee chip. The XBee chip is another

hardware element of the gateway, and it uses a USB serial dongle adapter. Optionally, the gateway can

be outfitted with a USB WiFi dongle to provide an internet connection. If not, a standard Ethernet

internet connection functions equivalently.

Software

The gateway software was written in a one multithreaded Java program. This program is

basically divided into two sections, a RabbitMQ client and an XBee serial communication module. These

sections are closely linked because an incoming message in either one results in an outgoing message on

the other. Furthermore, multithreading concerns are handled by congregating all functionality that needs

51

to be thread-safe into a few synchronized functions. These functions are then used instead of directly

accessing shared resources in order to guarantee that there will be no race-conditions, deadlocks, etc.

14.4.1.1 Messaging Format

Throughout all of the gateway software, messages are treated as sequences of bytes in the

HomeAlive message format. This format can be seen in Figure 22 and includes: 4 bytes of house

identification, 1 byte of device identification, 1 byte of message payload length, and up to 256 bytes of

payload data. House ID numbers are unique per household and device ID numbers are unique within

each household. Also note that start sequences are prepended to messages travelling from devices to the

gateway, but the start sequence is cut off before messages are delivered to the server.

Figure 22. HomeAlive Messaging Format (bytes)

14.4.1.2 RabbitMQ Client

The RabbitMQ client communicates with the RabbitMQ broker residing on the server machine as

described above. When receiving AMQP messages, the client is pushed by the broker and its received

message handler is called. This handler then makes use of the XBee Serial Communication module’s

send functionality in order to pass the message on as a DigiMesh message. When sending AMQP

messages, the client simply publishes the message content to the appropriate queue (see above); from

there the broker distributes it to the server manager. This structure is diagramed below in Figure 23.

14.4.1.3 XBee Serial Communication

As seen in Figure 23, the XBee Serial Communication module uses the jssc library to interact

with the XBee chip and dongle adapter, and it also does a significant amount of processing to confirm

message accuracy. When sending messages using the XBee chip, this module simply writes the byte

content to the DigiMesh protocol. However, when receiving DigiMesh messages two additional

algorithms are used to confirm message accuracy. First, devices sending message to the gateway must

start their messages with a specified 5 byte sequence, the start sequence. If the gateway receives a

message that does not begin with this sequence, it purges the serial buffer until it is either empty or

locates the correct start sequence. This helps the gateway be resilient against bad messages which

originate in the interleaving of DigiMesh messages from multiple sources. A higher quality solution

would be to access the XBee firmware and stop message interleaving from occurring in the first place;

however, this was considered out of project scope. Second, the gateway checks each message’s header

information for that message’s payload length. It will then continue reading bytes into that particular

message until the payload length is realized or a timeout event occurs. This helps protect the system

against the tendency of XBee chips to divide DigiMesh messages into segments and send each segment

separately. If the timeout event occurs, the serial buffer is purged in the same way as previously

described.

14.4.1.4 Multithreading

The multithreading capabilities of the Java programming language are used in order to more

efficiently handle gateway message conversions. As seen in Figure 23, there is a single main loop for the

program. The main loop listens for new XBee messages, reads them, and then spawns threads to handle

52

their conversion and resending. In addition, new threads are spawned when the program is pushed by the

RabbitMQ broker to receive a new AMQP message. These threads pass their message content on using

the XBee radio chip. In order to implement multithreading without running into deadlock, race condition,

or other problems, the Java ‘synchronized’ keyword is used. The ‘synchronized’ keyword allows

programs to mark functions that have critical sections and cannot be used by multiple threads at once. All

shared resources, especially the XBee radio chip, are wrapped in synchronized functions in order to make

them thread-safe.

Figure 23. Gateway Software Diagram

14.5 Devices

14.5.1 Thermostat

The HomeAlive team decided to develop a smart thermostat to show the system’s capabilities.

This was accomplished by converting a normal thermostat, which has a programmable schedule for the

week and weekend, and other features similar that may be set, into a smart thermostat by adding wireless

and scheduling capabilities. To do this a programmable thermostat was purchased and modified to be able

to be controlled wirelessly.

14.5.1.1 Hardware

This section will describe the hardware required to modify the thermostat and make it smart.

14.5.1.1.1 Thermostat

The Honeywell RTH6350 was selected to be the modified thermostat. This thermostat has 4

programmable periods - wake, leave, return, sleep - for both heat and cool, and the week and weekend.

This totals to 4 different schedules: a week heat and cool and a weekend heat and cool. The modified

design added the ability to electronically press the buttons, and wirelessly send and receive data.

53

14.5.1.1.2 Arduino

An Arduino Uno is used to electronically press the buttons, read if buttons are pressed manually,

process communications, and maintain a synchronized state with the state machine on the Honeywell.

14.5.1.1.3 XBee Chip

An XBee chip is used to wirelessly communicate with the gateway.

14.5.1.1.4 Control Circuitry

The control circuit of thermostat can be viewed in Figure 24. This section will walk through each

area of the circuit at a high level. For a further explanation of the button pressing see the honors report

posted on the team website.

When a button is pressed manually on the thermostat a terminal on the thermostat’s circuit is

shorted. This is accomplished electronically using a transistor (2N3904). The base of the transistor is

connected to the digital output of the Arduino. When the digital pin is asserted high the transistor is

forward biased and the emitter and collector are essentially connected. By connecting each end of the

button’s terminals to either the emitter or collector the transistor is capable of electrically pressing the

button.

This technique gave control to all six of the buttons, but pressing a button, manually or

electronically, can have different effects based on whether or not the thermostat is currently awake or

asleep. Thus a way needed to be devised to tell if the backlight is on or not. This is accomplished by

reading the voltage across the backlight’s LED on an analog pin.

The manual reads are accomplished by reading the voltage across the terminals of the buttons into

analog pins.

An LED is asserted digitally by the Arduino to show when the Arduino is busy.

Lastly, the thermostat has connections for a heater, air conditioner, and fan. To display when the

thermostat is turning on the heater, air conditioner, or fan LEDs are digitally asserted by the thermostat.

Figure 24. Thermostat Device Conceptual Diagram

54

Figure 25. Thermostat Device Schematic

14.5.1.1.5 PCB Fabrication

The initial circuit designs were built on a bread board, but once the circuit proved working they

were moved to printed circuit boards. The PCBs were fabricated at Calvin College.

14.5.1.2 Software

The thermostat device’s Arduino software consists of several thousand lines of Arduino code

(similar to C code), and it is organized according to the structure shown in Figure 26. This diagram

shows how Arduinos are divided into two sections, setup and loop. The setup code executes each time

the Arduino boots; the loop code executes repeatedly and endlessly until the Arduino shuts down. Each

segment of the Arduino code is explained in greater detail below.

55

Figure 26. Thermostat Software Diagram

A: Define Global Variables & Constants

This section of the software explicitly declares all the global scope variables and constants for the

program. Most of this section is filled with declarations of numerical constants for: recognizing

commands from the rest of the system, sending status updates to the rest of the system, and using

EEPROM addressing techniques. The constants for communication with the rest of the system must

match those used by the other system components exactly.

B: Send Status

This section of the software causes the Arduino to write bytes of information to the XBee RF

chip, where it will be sent to the gateway. These informative bytes are the message payload and are

wrapped in appropriate header information and prepended with the correct start sequence according to

Figure 26 above. In addition, the status reports follow a specific payload format of alternating feedback

codes and byte sub-payloads. A portion of the table detailing these can be seen in Figure 27.

56

Figure 27. Thermostat Feedback Codes Snippet

C: Initialize Variables

This minor but important section of the code prepares the thermostat to run by setting up its initial

state and resetting its internal timers.

D: Send Status

This section of the software is identical to the similarly named section in the Arduino setup code;

however, it is only executed if the custom Arduino chirping timer has expired. The chirping timer length

can be set by the HomeAlive system using thermostat commands; it is essentially how often the

thermostat should report its state.

E: Read Message

This section of the code relies heavily on the Arduino’s serial interface with the XBee RF chip. It

carefully examines incoming bytes of data in order to recognize only HomeAlive messages that are

intended for its specific device ID, discarding the other messages. If it does receive a message that is

intended for the thermostat, then it invokes the appropriate message handlers (see below).

F: Handle Message

This section of the code is the most important part of the thermostat Arduino program. It causes

the thermostat to take some action based on the command code and parameter values of the message

payload, a snippet of this structure can be seen in Figure 28. These actions involve the Arduino state

machine, EEPROM values, and pressing the thermostat buttons using the control circuitry described

above.

57

Figure 28. Thermostat Command Codes Snippet

G: Manual Button Press Checking

This section of code is responsible for recognizing when a user has physically pressed a

thermostat button with their fingers. It does this by quickly counting the number of times (corresponds to

length of time) that the Arduino analog read pins cross a certain voltage threshold. When that number

exceeds another threshold value, a button press has occurred and the appropriate state machine link is

forced in order to keep the Arduino and thermostat synchronized. One other important feature of this

code is its ability to recognize which of the 6 buttons is being pressed based on the 5 Arduino analog read

pin values, these are organized as explained in the hardware paragraphs above.

State Machine

One of the main functions of the Arduino code on the thermostat device is to maintain a state

machine that is always synchronized with the physical thermostat machine. This is necessary in order to

know what conditions exist on the thermostat without needing to access its firmware. As explained

above, the physical thermostat interfaces with the Arduino only via an analog reading of 6 of its electrical

nodes. This complex state machine has 22 states and 132 links where states represent thermostat

conditions and links are button presses, an abbreviated version is shown in Figure 29.

Figure 29. Thermostat Abbreviated State Machine

58

14.5.2 Outlet Adapter The outlet adapter was created from scratch as a device to mimic a commercial Kill-a-Watt with

the added ability of bidirectional communication, other commands, and toggling on/off feature.

14.5.2.1 Hardware

14.5.2.1.1 Arduino

The outlet adapter uses an Arduino Nano to process all of the wireless communications, perform

analog reads for current and voltage, and digitally control the a relay.

14.5.2.1.2 XBee Chip

An XBee chip was used to wirelessly communicate with the gateway.

14.5.2.1.3 Power Monitoring Circuitry

The power monitoring circuit is split into two different sections: the measuring of current and

voltage. The power factor was not determined, thus multiplying the measured current by the measured

voltage produced the apparent power (VA) and not the real power (W). The descriptions below explain

the schematic in Figure 32.

The basic approach to measuring the voltage is to step down the voltage by a factor of 1000.

Next the smaller voltage is used as an input to an rms to DC converter (AD736). The rms to DC converter

produces a steady DC value between 0 VDC and the positive voltage supply (5 VDC) proportional to the

input’s position in the input range. The input range is from 0 V to 200 mVrms thus 100 mVrms would

produce an output of 2.5 VDC. The output is sent to an analog pin on the Arduino. The Arduino was then

calibrated to produce valid measurements.

The current is measured using a current transducer (ACS712). The output of the ACS712 is a DC

value offset halfway (2.5 VDC) from 0 VDC to the positive voltage supply (5 VDC). The voltage output

is linearly proportional to the current, but scaled based on the power supply. The maximum input allowed

is 15 Arms, as specified by the datasheet. Thus, using a ± 5 VDC supply, the scaling factor is 0.333 and a

+ 100 mArms current would produce a + 33.3 mVDC from the DC offset and a - 100 mArms current

would produce a – 33.3 mVDC from the DC offset. The output would be 2.533 VDC and 2.467 VDC

respectively.

The next step was to filter the output of the current transducer. A 60 Hz bandwidth filter cancels

out the DC and passes only the 60 Hz signal, as would be expected of U.S. outlets. The filter also has the

negative effect of attenuating the signal by 70%.

After the signal is filtered it is input into an rms to DC converter (AD736), the same part but

another one. The AD736 does the same operation and functions the same way as above.

The output of the AD736 could be sent straight into the Arduino to be read, but to increase the

precision the output of the AD736 if first amplified by a non-inverting operational amplifier with a gain

of 5 V/V.

Lastly, the output of the operational amplifier is sent to a voltage divider that allows the output to

be read at smaller and larger values. The Arduino analog pins have a range of 0 VDC to 5 VDC. To gain

precision the analog reference (AREF) can be set as low as 1 VDC. The Arduino then converts the ratio

of the input compared to the reference (default 5 VDC) to a number between 0 and 1023. To illustrate, if

AREF is set to 3 VDC and the input is 1.5 VDC the number for an analog read will be 512. The output of

the AD736 is from 0 VDC to 1 VDC and corresponds to a value of 0 Arms to 15 Arms. By amplifying

this output by 5 times the full range of the analog read can be utilized. Next by setting AREF to 1 VDC

59

more precision can be acquired. To make sure that the maximum output of the operational amplifier (5

VDC) is in the range of AREF a voltage divider is used. The voltage divider splits the operational

amplifiers output into five equal chunks. To illustrate, 1 VDC is split into 0.2 VDC, 0.4 VDC, 0.6 VDC,

0.8 VDC and 1.0 VDC. Thus, 5 VDC will have at least one reading that is in range.

An analog pin reads the voltage divider at each one of these chunks. The chunk with the lowest

value is checked first. If it is out of range (it equals 1023) the next lowest chunk is checked. This

continues until the highest chunk (the original value) is checked. If that value is out of range the current is

determined to be above 15 Arms. The Arduino was then calibrated to produce valid measurements.

Figure 30. Outlet Adapter Device Conceptual Diagram

60

A

A

B

B

C

D

E

61

C

D

E

62

Figure 31. Outlet Adapter Device Schematic

Figure 32. Outlet Adapter Device Filter

Figure 33. Outlet Adapter RMS to DC Calibration

63

Figure 34. Outlet Adapter Device Voltage Calibration Curve

64

Figure 35. Outlet Adapter Device Current Calibration Curve

65

Figure 36. Outlet Adapter Device Photo

14.5.2.1.4 Control Circuitry

The control circuit for the outlet adapter’s toggling utilizes a relay, controlled by the digital

output of the Arduino. The relay (G5CA-1A) needs 5 VDC and 40 mA to be able to control up to 15

Arms through it. To control the switching on and off of the relay a transistor (2N3904) is connected to it.

The transistor is forward biased by the digital output of the Arduino.

14.5.2.1.5 PCB Fabrication

The initial circuit designs were built on a bread board, but once the circuit proved working they

were moved to printed circuit boards. The PCBs were fabricated at Calvin College.

14.5.2.2 Software

The outlet adapter device’s Arduino software consists of a several hundred lines of Arduino code

(similar to C code), and it is organized according to the structure shown in Figure 37. This diagram

shows how Arduinos are divided into two sections, setup and loop. The setup code executes each time

the Arduino boots; the loop code executes repeatedly and endlessly until the Arduino shuts down. Each

segment of the Arduino code is explained in greater detail below.

66

Figure 37. Outlet Adapter Software Diagram

A: Define Global Variables & Constants

This section of the software explicitly declares all the global scope variables and constants for the

program. Most of this section is filled with declarations of numerical constants for: recognizing

commands from the rest of the system, sending status updates to the rest of the system, and using

EEPROM addressing techniques. The constants for communication with the rest of the system must

match those used by the other system components exactly.

B: Send Status

This section of the software causes the Arduino to write bytes of information to the XBee RF

chip, where it will be sent to the gateway. These informative bytes are the message payload and are

wrapped in appropriate header information and prepended with the correct start sequence according to

Figure 19 above. In addition, the status reports follow a specific payload format of alternating feedback

codes and byte sub-payloads. A portion of the table detailing these can be seen in Figure 38. For the

outlet adapter, status reports are either comprehensive or limited. Comprehensive reports share all status

information while limited ones share only frequently changing information.

67

Figure 38. Outlet Adapter Feedback Codes Snippet

C: Load EEPROM

This minor but important section of the code prepares the outlet adapter to run by setting up its

initial state and loading its EEPROM values into its global variables.

D: Send Measurements

This section of the software is identical to the Send Status section in the Arduino setup code;

however, it is only executed if the custom Arduino chirping timer has expired and it only shares a limited

status report. The chirping timer length can be set by the HomeAlive system using outlet adapter

commands; it is essentially how often the adapter reports the power monitoring values that it is reading.

E: Read Message

This section of the code relies heavily on the Arduino’s serial interface with the XBee RF chip. It

carefully examines incoming bytes of data in order to recognize only HomeAlive messages that are

intended for its specific device ID, discarding the other messages. If it does receive a message that is

intended for the thermostat, then it invokes the appropriate message handlers (see below).

F: Handle Message

This section of the code causes the outlet adapter to take some action based on the command code

and parameter values of the message payload, a snippet of this structure can be seen in Figure 39. These

actions typically set whether or not the adapter has toggled on its relay and whether or not the adapter is

chirping its measurement values.

Figure 39. Outlet Adapter Command Codes Snippet

G: Measure & Sample

68

This section of code is responsible for using the Arduino’s analog read pins in order to determine

the voltage and current being used by the adapter hardware. As explained above, voltages are read by a

single Arduino pin and the current is read by several Arduino read pins. The values of these pins are

sampled over either a certain number of repetitions or a certain amount of time and then averaged.

Finally, the averaged values are subjected to a linear calibration curve in order to determine current,

voltage, and power values. The calibration curves can be seen in the figures below and were generated by

submitting the adapter to several different loads and comparing values to a DMM readout.

Custom Floating Point Format

Due to the non-integer nature of voltage readings, current readings, and calibration curve values,

it became necessary for the HomeAlive system to pass floating point values between its components.

This presented something of a challenge because the system deals exclusively with byte data. Two

solutions were used, one for power readings and one for calibration values.

The solution for power readings (voltage and current) was to pass three bytes of data and interpret them

using a one-deci-milli format. For example, the number 214.692 V would be separated into 214 V for the

first byte, 6 dV for the second byte, and 92 mV for the third byte. Adding these together results in the

original value of 214.692 V.

The solution for the calibration values allows four distinct bytes to be used to communicate all

positive or negative values of 6 or less significant figures with magnitudes between 1*10^-63 and

999999*10^63. This is done using another custom format wherein the second, third, and fourth bytes are

simply the BCD value of each segment of the 6-digit number. For example, 123.456 would have the

second byte 12, the third byte 34, and the fourth byte 56. The first byte is handled more complicatedly;

its range (0-255) is divided into four equal sections: (0-63), (64-127), (128-191), and (192-255). These

sections clarify both the exponential power of 10 to shift the magnitude by, and also the sign of the

overall number. The four sections above correspond to (positive value, positive exponent), (positive

value, negative exponent), (negative value, positive exponent), and (negative value, negative exponent)

respectively. Furthermore, the magnitude of the exponent is given by the first byte’s value minus its

sections first value. For example the first byte 67 would show a positive overall value, a negative

exponent value, and an exponential magnitude of 3 = 67 - 64. Therefore the bytes 67, 12, 34, and 56

would signify the equation +123456 * 10^-3 and result in the value of 123.456.

State Machine

One of the main functions of the Arduino code on the outlet adapter device is to maintain a state

machine that is always synchronized with the physical outlet adapter. As seen in Figure 40, the adapter’s

state machine is a simple one with just 4 states and 8 links. Navigating between these states can be done

only by sending the adapter RF commands of the proper format as explained above. Reporting refers to

whether or not the adapter is sending its measured power values to the rest of the system. Relay on refers

to whether or not the adapter is allowing power to pass through it and turn on whatever is plugged into it.

69

Figure 40. Outlet Adapter State Machine

70

15 Integration, Testing, and Debugging

15.1 Testing Summary

Tests for this system will be used in order to ensure proper functionality of the system and its

components throughout the development process and in order to evaluate the final prototype. These tests

can be categorized as hardware tests, software tests, interface tests, user tests, or some combination, and

each category can be further divided into multiple types. Two specific tests that have been established are

the end-to-end communication test and the weekend-loop test. Additionally, a ‘fail fast’ methodology

will be used whenever possible.

A ‘fail fast’ methodology is based on the notion that the earlier in the design process a failure is,

the more capable designers are of remedying the issue. This is because less resources have been invested,

more time remains before deadlines, and less consecutive design decisions have been made that depend

on the failing component. The methodology is acted upon by scheduling frequent, small-scale tests as

early as possible during the design of the system. Even a basic proof of concept test can be invaluable

when evaluating feasibility and making design decisions.

The user interface will be tested in two distinct ways, firstly for functionality and secondly for the

quality of user experience. Functionality tests include evaluating the speed at which it communicates

with the database, confirming the accuracy of its values, and other tests. Quality tests will be done by

exposing unfamiliar individuals to each webpage and asking them to rate it using categories and one-to-

ten scales.

The two primary ways in which the server will be tested are by measuring its speed and

robustness. Speed tests evaluate the delays between the reception of a message and the handling of that

message. They can be performed in both single message situations and message flood situations.

Robustness tests help to ensure the server can handle high volumes of information and atypical command

sequences.

Gateway testing will focus mainly on processing speed and robustness. The gateway will be

evaluated to ensure that the duration of time between its reception of a message and its sending of the

converted message is acceptably short. The gateway will also be evaluated to ensure that it can run for

long periods of time and in high-traffic situations without ceasing to function properly.

Device testing for the thermostat and outlet adapter can be categorized as object-related or

control-related. Object-related testing for the purchased thermostat will be limited; however, object-

related testing for the outlet adapter will thorough. It will include evaluations of maximum loads,

measurement accuracy, parasitic power draw, and more. Control-related testing for both devices will be

used to ensure that system messages invoke appropriate responses in the object and to confirm that the

generation of status update messages is handled as intended.

Successful component interaction will be tested in several different ways, but the most important

of these is the end-to-end delay test. The end-to-end delay test measures the length of time between the

generation of a message on either a user interface and the reception of that message on a device; this is

also done in the opposite direction. The test also establishes a maximum passable delay duration.

Table 32 shows the description of the table title used to describe the testing. Since the testing is

not conducted fully, the testing results are not shown in the testing table.

71

Table 32. Testing Table Parameter & Their Descriptions

Name of Parameter

Description Name of

Parameter Description

Name of Parameter

Description

Test Name Test name identification

Test Type I The first criteria being tested

Test Pass Min* The minimal result of the testing

Component Under Test

Name of the tested component

Test Type II The second criteria being tested

Test Pass Max*

The maximal result of the testing

Prototype Should Pass

The necessity of passing the test?

Test Description

Simple description of the testing

Test Results* The result of the testing

Prototype Has Already Passed Informally

Informal test has been done?

Test Conditions

Initial condition of the testing

Test Passed?* The result of the testing

Test Measured Value

The variable being measured in the test

15.2 Informal System Testing

One specific, holistic test that will be used to evaluate this system is the end-to-end-

communication test. This test consists of simply sending a recognizable signal, such as “hello world” or a

pattern of bit voltage levels, from device hardware through the communication modules, gateway, and

server to the phone application. This test should also be performed in the reverse direction. If successful,

the end-to-end-communication test indicates that all relevant parts of the system can feasibly be used as

intended in the system. This test should be done as early as possible in keeping with the ‘fail fast’

methodology described above.

Another specific tests that will be used to evaluate components in this system is the weekend-loop

test. It is primarily an interface test, and consists of monitoring the communication between two modules

over a period of time. For example, the gateway should be able to send an integer value to a device and

the device should be capable of responding with that same value. Upon receiving the matched

acknowledgement, the gateway will increment the integer and send it again. If this continues successfully

over the course of a weekend, it is likely capable of running stably for much longer. Table 44 in the

Appendices displays the testing that will be conducted.

15.3 Informal User Interface Testing

User testing has two main aspects, unexpected use-cases and the user experience. User tests

typically involved taking a third-party individual or random of individuals with limited knowledge of the

product, and allowing them to interact freely with the system or component under test. This was typically

most helpful when the sample users are taken from the target demographic population. User tests could

reveal unexpected use-cases for the system. New, unknowledgeable individuals were likely to attempt to

interact with the system in ways that system designers did not foresee. Additionally, the user experience

can be evaluated using user tests. By watching random users interact with the system, and by surveying

72

or interviewing them afterwards, HomeAlive gained valuable insights into the development of the

product.

The specific tests performed on the user interface includes continuous running, message flooding,

security, and consumer/user testing. These tests prove the robustness, continuous-running performance,

and security aspect of the system. Table 45 in the appendices shows the complete testing table. The user

tests was done 4 days before the project showcase. Knowledgeable users are the primary candidate

because they brought harder issues to fix such as alerts timing, delays in function, and function

breakpoints. Within a day, the HomeAlive member fixed the issue and conduct another user tests. This

time both knowledgeable and unknowledgeable users took part of the test. Minor and major changes

were needed such as cropped logo, unrelated icon, and page links. Finally, the last informal user tests was

conducted a day before the showcase.

The next test conducted was the message flooding and continuous running. The user interface

was saved on the phone browser for 1-2 days. Then the user periodically checked whether the alert

system still notify of the send command and database update. The live checking worked continuously for

6 hours as it track changes every 2 seconds. To combine the two tests, the HomeAlive member decided

to update the database once every second to check if the user interface still response correctly. In the span

of 3-6 hours, the user interface functioned well. Minor fixes needed were alert bubble blocking the

display and skipped alert. The skipped alert was fixed a day before the demonstration, but the alert

bubble required more time to fix.

The security protocol used in the user interface was a standard PHP security. HomeAlive used

the security provided by PHP as well as the POST method of the form. These protocols were deemed

sufficient for stopping minimal hacker. Brute force and sophisticated hacking system were not tested,

therefore HomeAlive could not determine the result of user interface hacker resiliency.

15.4 Informal Server Testing

Server tests focus on the server’s availability, processing speed, messaging flood response, error

message handling, and security. The processing speed tests involved the server’s timing and consistency

when the server is continuously running. The server’s internet connection strength is also an important

measure of the robustness of the server. Finally, the security testing includes checking the resilience to

inappropriate access by an unqualified party. Table 46 in the appendices shows the complete testing

table.

Each function in the server’s programs was tested using a unit test during development. After

each function was written, the function was called using various input parameters and the results were

verified. Such unit testing ensured that individual functions were correct. According to the operating

system log, the server was also proven to run around 75 days without any downtime, at which point it was

shutdown (it did not crash). The server machine worked better than originally expected considering the

dusty and unregulated temperature environment. The ambient environment seemed not to have effect on

functionality and performance of the server.

In order to test the processing speed and messaging flood response, a HomeAlive system with

two households was set up. The server received more than 240 requests per minute from multiple

gateways. The AMQP broker received those messages in real time; however, the database management

program was found to have a two minute lag due to multiple IO reads and writes. The API functions

were then revised and retested. After this, the whole server performed in real time with no significant

delays.

73

The security of the server was not explicitly tested. However, a number of additional securities

were implemented in the server. The MySQL server used user and password security system. It would

not allow logging in from unrecognized computers effectively preventing hackers. Hackers won’t be able

to hack unless they obtained HomeAlive’s computers physically. In addition, only the required ports

were open on the server. This prevents Hackers from getting access to server using unused ports. The

server also used a SSH key based connection. Each team member was provided with a 512 bit AES key

file to access the server. AES is a military standard encryption method and hacking such kind of keys

required multiple days and proven unsuccessful most of the time. In addition, RabbitMQ broker also

used its own independent user and password based security system. Thus, the server was considered to be

resilient from most hackers although no explicit tests were performed.

15.5 Informal Gateway Testing

Gateway testing is done to ensure the processing speed, hardware, software, and security of the

component are high-quality. Processing speed testing involves timing the delay between a message

reception and the sending of its converted form in both directions. Hardware testing is related to

confirming continued functionality under extreme heats, extreme colds, and also room temperature

conditions. Heat dissipation and water resistance were also be part of the hardware testing. For the

software testing, unit and module level tests were conducted to ensure that the software is reliable and

consistent. Security testing refers to checking whether a hacker could easily corrupt the operations of the

gateway. Table 47 in the appendices shows the complete gateway testing table. These tests, with the

exception of extreme temperatures, have all been passed informally by the HomeAlive prototype.

Informal passing means that the metrics by which these tests were evaluated were consistently noted in

the passing range during other, system-level testing. However, informal tests were not explicitly

performed with known control groups and careful procedures.

15.6 Informal Devices Testing

The devices’ hardware were tested throughout the design via informal unit tests, PSpice

simulations, and whole system integration tests. The software testing involved message flooding,

intentionally erroneous messages being sent, continuous running, testing the accuracy in the

measurement, rapid toggling, and unit and module tests. The design process was iterative and each time

the system grew in size informal tests were conducted. First the devices were tested in isolation from the

system, no communication with the gateway, server, or user interface. Data was sent via USB and java

test programs. Once the devices were sending and receiving data properly and the appropriate actions

were being performed in hardware, the devices were connected to the gateway and informal tests were

conducted at that level of integration. Next the devices were tested at a fully integrated level via the user

interface sending commands and viewing the results. These tests ensured the robustness, power usage,

accuracy, and software reliability of devices. Table 48 in the appendices shows the complete list of tests.

15.7 Informal Component Interaction Testing

Interface tests focus on confirming the appropriate functionality of the system’s inter-component

communications. These tests are crucial because points of component interaction tend to be both the

hardest to develop correctly and the most likely to fail over time. Interface tests include both hardware

and software tests, as described above. Hardware interface tests are performed on circuitry that connects

multiple components by transmitting signals between them. One key aspect they check is the matching

between the maximum output signal amplitude and the maximum input rating of the targeted component.

Software interface tests are performed to ensure that different programs and platforms are communicating

74

digitally as intended. This is often done by sending a target component a known signal and expecting a

certain forthcoming response.

The tests conducted for the component interaction specifically involve the XBee and AMQP

linkage. The server and the gateway will be tested on their messaging protocol security. The devices and

the gateway will be tested on their XBee resiliency. Table 49 in the appendices shows the complete

testing table.

15.8 Formal Testing

The HomeAlive project was unable to comprehensively and thoroughly complete all of their final

testing; however, a significant portion of it was still done. As described above, integrated, functional,

system testing was performed over the course of several weeks. During this testing, many of the same

conditions that would be formally present in the incomplete tests were realized. This allows the team to

declare that many of their performance tests were informally passed. Unfortunately, these performance

tests were not explicitly tested in otherwise isolated conditions due to a lack of remaining time in the

project. This lack of time ultimately stems from the team’s decision in March to pursue additional

features on both devices. The team favored the trade-off of additional functionality over more thorough

testing. Finally, the HomeAlive team was able to determine around 80 tests that should be done on the

prototype if there was enough time. These can be seen in Figures 44 to 49.

75

16 Business Plan

16.1 Mission & Vision

16.1.1 Mission for the Company

HomeAlive’s mission is to provide to homeowners accessible control of any electronic device,

smart or non-smart, through a convenient, elegant, and intuitive remote-interface.

16.1.2 Vision for the Company

HomeAlive’s vision is to make its way into the home automation market and claim a significant

portion of market share. Upon meeting this goal, HomeAlive will seek to expand its product base, which

will further HomeAlive’s presence in the market. HomeAlive seeks to become one of the top competitors

in the home automation market within ten years.

16.2 Market Survey

The home automation market has multiple established, large-company competitors; each of

whom offer similar device support and features. To complete in this market, HomeAlive will need to

differentiate its features from those competitors. Table 33 and Table 34 show existing competitors their

product features. Table 33. Existing Competitors in the Market with Devices

Devices Iris Connect Wink Peq Smart things

Gateways Y Y N Y Y

Lights Control Y Y Y Y Y

Contact Sensors Y N N Y Y

Motion Sensors Y Y N Y Y

Water Sensor N Y N Y Y

Door Open/Close Sensor N N N N Y

Keypad Y Y N N Y

Outlet Adapter Y Y N Y Y

Power Strip N Y N N Y

Thermostat Y Y N Y Y

Range Extender Y Y N N Y

Locks N Y N Y Y

Smoke Detector N Y N N Y

Camera Y Y N N Y

3rd Party Support N Y Y N Y

Table 34. Features Comparison among Commercially Available Home Automation Systems

Features Iris Connect Wink Peq Smart things

Basic Control Y Y Y Y Y

Notification Y N N N Y

Video Camera Y N N N Y

Customizing Rule Set Y N N N Y

Voice Control Y N N N Y

16.3 Market Sizes & Trends

HomeAlive is targeted towards both new and previous homeowners. Several smart home

products already exist, such as Google’s Nest, Philip’s Hue light bulbs, Apple’s HomeKit, and others.

76

However, there is a lack of seamless system integration that would allow the connection of all devices.

The home automation market has been changing in order to address that gap. Lowe’s Iris is an example

of such an attempt; HomeAlive’s product will be another.

The smart home market was valued at $33 billion in 2013, and is expected to boom to $71 billion

by 2018 according to Juniper Research. The recent market entrants such as Apple (HomeKit), Google

(Nest), and BestBuy (Peq) have strengthened the market; it is clear that the smart home market is

increasingly valuable.

16.4 Potential Customers & Target Market

HomeAlive targets both new and existing homeowners as potential customers. The specific

target market focuses on homeowners who have disposable income, familiarity with electronic devices, or

margin to gain from increased accessibility to devices.

16.5 Competitive Strategy

HomeAlive seeks to compete based on differentiation. Competing based on cost would not be

feasible due to the presence of large-company competitors already in the market. Competing based on

response would not be as applicable to this product as differentiation for the reasons explained below.

16.5.1 Differentiation

Customers will want to buy home automation product based on up-to-date technology, ease of

access, and reliability. HomeAlive provides ease of access by creating intuitive and elegant interfaces.

Other key differentiation that HomeAlive focuses especially on customer experience and environmental

sustainability of HomeAlive products.

16.5.2 Response

HomeAlive’s system design has similar scale compared to other home automation products. This

fact leads to a need for better control and focus. HomeAlive brings more flexibility to customers who

have prior home technology devices than other products do. HomeAlive offers embedded technology that

connects all home devices with the gateway, which helps with increasing ease of access and the apparent

quickness of HomeAlive’s products.

16.6 SWOT Analysis

16.6.1 Strengths

HomeAlive is built by a passionate and motivated team, which is reflected in the product. The

home automation market has a large potential for new product growth and HomeAlive will use this to

gain market traction throughout development and support of new devices. Large company bureaucracy

will not slow the team down; instead, necessary design modifications will be made quickly and

effectively.

16.6.2 Weaknesses

HomeAlive is not a recognized name and its executives are not experienced in the market. In the

early stages of production, due to lack of name recognition and a small customer base, the cost for

HomeAlive will be more expensive. This will be true until demand reaches high enough levels to use

economies of scale to lower production costs.

16.6.3 External Opportunities

The market that HomeAlive focuses on is relatively new and broad. Rapid technology

improvements help the current generation to become familiar when handling technology. This trend is an

excellent opportunity for HomeAlive to emerge into the market. New homeowners with higher

77

disposable incomes and who have gadgets are the main target. The uniqueness of HomeAlive’s products

will attract additional customers.

16.6.4 External Threats

The competition with the established brand products offered by competitors is a strong threat to

HomeAlive. They are well funded and have more resources in their research and development branches.

Another threat is the lack of differentiation between the home automation products currently on the

market. Customers who have home automation devices might not be interested in buying HomeAlive’s

products. In order to maintain market share, HomeAlive needs to build customer loyalty and focus on

having a flawless product.

16.7 Cost Estimate

16.7.1 Development

This section provides a detailed account of the expenditures for the HomeAlive project over the

course of the 2014-2015 school year. Table 3 contains every expenditure for the mentioned time period.

16.7.2 Production

This section estimates the cost to produce the HomeAlive system. This includes development,

manufacturing, operating, and capital expenditures. The purpose of this is to derive the cost to produce

each unit.

16.7.2.1 Financial Forecasts

16.7.2.1.1 Key assumptions

HomeAlive LLC’s financial forecasts are based on several key assumptions. Most of the

financial predictions are either directly or indirectly based on the revenue received. The assumed revenue

affects the cash flows, the amount of money requested, the Gross Margin, Profit Margin on Sales, Total

Asset Turnover, Debt to Asset Ratio, and Break even analysis. Each year has its own amount of product

produce. The product is assumed to be sold and collected as revenue spaced over four quarters. It is

assumed that in the year it was produced 16% (1/6) will be sold in the third quarter and 50% (1/2) in the

fourth. Then, in the year following in the first quarter 8% (1/12) will be sold and in the second quarter the

final 25% (1/4) will be sold. See Appendix Figures 55 - 57 for the quarterly Cash Flow Statement and its

explanation Figure 58. The forecasts assume the necessary loans will be received, and the calculations for

paying back the loans are made assuming 10% interest on the principal. HomeAlive LLC assumes that it

will break even upon selling 18,021 starter kits and 4,505 servers. Along with this assumption is the

supposition that for every four starter kits purchased one server will be sold.

16.7.2.1.2 Financial statements

16.7.2.1.2.1 Income statement

An income sheet highlights the profit or loss of a company over a period of time. HomeAlive

LLC’s Pro-Forma Statement of Income, Figure 41, shows a positive net income in each year. Assuming

sales revenue picks up in the third and fourth quarter of the first year, HomeAlive LLC should be able to

make a profit in the first year. The second and third years see an increase in profit through increasing

production.

78

Figure 41. Statement of Income.

16.7.2.2 Cash Flow Statement

A cash flow is found by taking the amount of cash for a given period and subtracting all of the

fixed and variable cost. This is the bottom line amount of cash in the bank account. This number should

not be negative. If it is the company cannot pay its bills.

HomeAlive LLC has negative cash flow in the first three quarters. This is from the cost of

starting and lack of revenue. To pay the bills HomeAlive LLC must take out a loan for $1,120,000 in the

first quarter and $1,220,000 in the second quarter.

HomeAlive LLC seeks to maximize its total asset turnover. While it is a good idea to have some

capital reserved for emergencies, large sums of cash that is not being used to generate more revenue is

being wasted. In year 2 and 3 HomeAlive LLC’s bank account gets larger. This cash will be used to

launch other products such as devices that may be coupled with HomeAlive LLC starter kit. This cash

will also be used to expand and increase production.

See Appendix for a quarterly Cash Flow Statements, Figures 54 -58.

Figure 42. Statement of Cash Flows

79

16.7.3 Break-even analysis

The fundamental question to answer when proposing a business is how much product needs to be

made, assuming it all sells, in order to cover the fixed and variable costs. This is the point where the

finances are netted to zero. This is called break-even analysis.

HomeAlive LLC has two products it sells. The starter kit is sold for $125 and comes with an off-

site server rental fee included. If a homeowner wants to own the server one may be purchased for $175.

This server comes with the software downloaded onto it. HomeAlive LLC uses a model that predicts

25% of customers who buy a starter kit will also buy a server. Using this information HomeAlive LLC

needs to sell 18,021 starter kits and 4505 servers in the first year, 18,745 starter kits and 4,686 servers in

the second year, and 17365 starter kits and 4341 servers in the third year. For details see Figure 52 - 58 in

the Appendix.

16.7.4 Ratio Analysis

HomeAlive LLC uses the following four ratios (quarterly gross margin, profit margin, asset

turnover, and debt to asset ratio) to measure the health, growth, and asset management of the company.

See the Appendix for a sheet containing quarterly ratios, Figure 43. Also see Appendix for an

explanation of how each of these ratios are calculated, Figure 59 - 60.

Figure 43. Ratio Analysis.

The gross and profit margins are low in the first quarter of each year. This is because revenues

are down after the holiday season. They improve in the second quarter with predicted increase revenue.

In the third quarter many people are on vacation and revenue is down again. Finally in the fourth quarter

these margins are high. Revenues increase with the holiday season boosting these margins.

80

The total asset turnover is very poor until revenues start coming in the third quarter. This ratio is

best in the early second year. The third year could improve by reinvesting the cash asset into other

products as mentioned earlier.

The debt to asset ratio is the worst at the beginning. Startup costs are not covered by revenues

until the third quarter. It takes well into the second year before the debt of startup is paid off.

16.7.4.1.1 Unit Price

The material costs can be found in Figures 47 and 48 in the Appendix. Figure 44 shows the sell

price for a starter kit and server. The cost of goods sold and operating costs for the first three years can be

found in Figure 52 in the Appendix. The fixed and variable cost can be found in Figures 49 in the

Appendix. For further information on the pricing see the business report downloadable from the team

website.

Figure 44. Revenue Sheet – If Everything Produced In a Year Is Sold In That Year

16.7.4.2 Loan or Investment Proposal

16.7.4.2.1 Funds Requested

HomeAlive LLC will not seek to use any money from its leadership. This will allow for

decisions to be made without the effect of personal agendas. HomeAlive LLC will need some capital to

start. Thus, a loan for $1,120,000 will be taken out and $1,220,000 in the second quarter.

16.7.4.2.2 Purpose & Uses of Funds

These loans will pay for all of the cost of the operations. This includes fixed and variable costs,

equipment, etc.

16.7.4.2.3 Repayment or "Cash Out" Schedule

In the event of HomeAlive LLC is splitting, assuming the loans have already been paid back,

HomeAlive LLC can easily dissolve its assets. This is because cash will be the biggest asset. HomeAlive

LLC has very little equipment or facilities that it owns. The strategy would be to pay off any outstanding

debts and split the remaining assets with the employees based on rank in the company.

81

17 Conclusion

17.1 Future Tasks

Over the course of this project many features were thought of and even considered, but ultimately

did not make it into the scope of the project for various reasons such as the complexity of designing them,

the time required to implement them, or the cost of implementing them. The features may have been out

of the project scope but are still worth mentioning as a means of articulating the level of thought put into

this project and also as future tasks for any group wanting to further this project.

17.1.1 User Interface

The user interface has endless major and minor future tasks. The HomeAlive user interface

provided good functionality and performance, but further improvements are needed. More graphing

displays could be added to plot thermostat history data and outlet voltage. In the case of additional

devices such as coffee maker and washing machine, the graphing history of their usage could be

displayed in the user interface.

HomeAlive did not create applications for specific operating systems because they are out of the

scope and not universal. Certain features can be maximized if applications are used as the user interface.

One of the example is the setting/customization of the themes and additional devices. However, in terms

of functionality and performance, website is sufficient.

One of the most fascinating update for the user interface is the customizable modes. This feature

will allow a particular user to set his/her favorite settings for a specific device. This feature involves

updating the server to allow more database variables. Some examples are setting of room temperature

and setting of the coffee maker. Another related improvement for the customizable mode is to allow

scheduling for all of the devices including outlet adapter. This allows the outlet to automatically turn off

and on at certain times of the day. Again, the server needs to comprehend this new scheduling feature.

Table 35 shows the summary of the future and finished work of user interface.

82

Table 35. User Interface Tasks

Task Inside Scope Task Applied

Graph of thermostat history Yes No

Graph of outlet history Yes Yes

Graph of additional devices No No

Applications for user interface No No

Customizable modes No No

Outlet Scheduling Yes No

Sends input forms Yes Yes

Hides unselected features Yes Yes

Receives database data Yes Yes

Follows the original theme view Yes Yes

Alerts user for changes Yes Yes

Accessible worldwide Yes Yes

17.1.2 Server

The server could be improved to provide a more advanced messaging algorithms. This improved

algorithm allows the server to choose which commands should be sent before others. In other words, the

priority queuing system will help each household to function efficiently. It would utilized the strengths of

MySQL database.

Second, the server can implement the multithreading/multiprocessing method for the database

manager. This will allow the server to operate faster depending on the server’s processing speed. With

the technological update in the computing world, the server could have twice to three times faster every

year. In order to fully implement the multithreading method, a more suitable programming language can

be used. HomeAlive decided to use PHP as their programming language. Java and Python can be used in

the future.

83

Third, the database could be improved to accommodate the changes in the user interface. Some

future improvements listed for user interface are scheduling and customizable mode. These features

require more tables in the database as well as more processing strength as the network traffic will increase

by two fold per device. Table 36 shows the summary of the future and finished work of server.

Table 36. Server Tasks

Task Inside Scope Task Applied

Advanced messaging algorithms No No

Multithreading/multiprocessing No No

Add scheduling database table Yes No

Handle status request from User Interface Yes Yes

Handle status request from the Gateway Yes Yes

Handle request to register commands in the database Yes Yes

Handle request to register status of the devices in the database Yes Yes

Host an AMQP server Yes Yes

Host a database Yes Yes

Database structure Yes Yes

Message Integrity Yes Yes

Send message to the gateway Yes Yes

Receive message from the gateway Yes Yes

17.1.3 Gateway

The gateway needs future improvements if the number of devices increase. There is a low chance

that the gateway is unable to handle more devices. In the case that more devices means worst gateway

performance, a future improvement has to be implemented. Table 37 shows the summary of the future

and finished work of gateway.

84

Table 37. Gateway Tasks

Task Inside Scope Task Applied

Improve gateway performance if devices are

added No No

Converts messages from AMQP to DigiMesh Yes Yes

Converts messages from DigiMesh to AMQP Yes Yes

Receives and sends DigiMesh messages Yes Yes

Receives and sends AMQP messages Yes Yes

Does not alter or confuse messages Yes Yes

17.1.4 Devices

The devices that can be added into the system are endless. The increase in number of electronic

appliances makes HomeAlive opportunity to expand bigger. Coffee maker and lighting system are the

main consideration when HomeAlive decided on their scope. These devices are considered as essential

devices because most users will use them almost every day. Furthermore, robot vacuum, lawnmower,

washing machine, and mp3 player are other devices that could be added in the future. Table 38 shows the

summary of the future and finished work of devices.

Table 38. Devices Tasks

Task Inside Scope Task Applied

Implement a coffee maker No No

Implement a lighting system Yes No

Implement additional devices No No

Implement a thermostat Yes Yes

Implement an outlet adapter Yes Yes

17.1.4.1 Thermostat

The improvement for thermostat involves a flawless manual button reading. The long pressing of

buttons in the thermostat are not recorded in the system. This improvement will provide a better system

synchronization in the future. In addition, the thermostat could provide the data of the current room

temperature. The gateway, server, and user interface can then accommodate this new variable to allow

user to see almost all the data that they need. Furthermore, the casing of the thermostat and the

processing unit can be improved in the future. Table 39 shows the summary of the future and finished

work of thermostat device.

85

Table 39. Thermostat Tasks

Task Inside Scope Task Applied

Gives current room temperature No No

Physical Button Pressing Yes Yes

Electrical Button Pressing Yes Yes

Remember previous settings & calibration Yes Yes

Bidirectional Communication Yes Yes

Wireless Communication (DigiMesh) Yes Yes

Safe to use Yes Yes

17.1.4.2 Outlet Adapter

The outlet adapter will need more calibration in the future to provide a more accurate voltage and

current reading. This will allow the user to compare their monthly electricity bill with their outlet history

record. Additionally, the outlet adapter should have its own display of power usage and switch. This will

give two options for the user: control from the home manager or directly control the outlet. The outlet

will need a safer casing in the future as well as smaller circuit board design. Table 40 shows the summary

of the future and finished work of outlet adapter.

Table 40. Outlet Adapter Tasks

Task Inside Scope Task Applied

Conduct more calibration Yes No

Displays the power usage and switch No No

Smaller circuit design No No

Measure Power (VA) Yes Yes

Turn On & Off Yes Yes

Remember previous settings & calibration Yes Yes

Bidirectional Communication Yes Yes

Wireless Communication (DigiMesh) Yes Yes

Safe to use Yes Yes

Dimensions Yes Yes

17.1.5 System Level

HomeAlive did not focus on adding extra layer of security in their user interface, server, and

gateway. This will certainly improve the hacker resiliency as well as robustness of the overall system. In

86

the future, more powerful server and gateway will allow for devices on the market to be integrated into

HomeAlive system.

An integration of more devices including coffee makers, electronic door locks, garage doors,

lighting system, and others are favorable compared to adding the number of same devices. After further

testing of these new devices, HomeAlive could improve by allowing new devices to be “synced” to the

system with ease. This pairing system are popular and favorable compared to predefined device

connection. Table 41 shows the summary of the future and finished work of system level.

Table 41. System Level Tasks

Task Inside Scope Task Applied

Increase security layer No No

Handles more devices than 4 No No

Easy pairing system No No

Allows remote control of prototype devices Yes Yes

Allows multiple distinct devices Yes Yes

Allows multiple distinct households Yes Yes

Scalable to multiple distinct user interfaces Yes Yes

Scalable to 256 devices per household Yes Yes

Scalable to numerous households Yes Yes

17.1.6 System Testing

The improvements for the system testing involves more number of houses. Before increasing the

number of prototype household, HomeAlive needs to improve their server, gateway, and devices. This

improvement will give more efficient replication as well as better performance and features. The cost of

will also decrease which mostly depend on the PCB design. Table 42 shows the summary of the future

work of system testing.

Table 42. System Testing Tasks

Task Inside Scope Task Applied

Increase number of house prototype No No

17.2 Summary

17.2.1 Lessons Learned

Throughout the HomeAlive project, the team members learned numerous valuable lessons related

to both technical details and team-oriented project details. The most notable of these are summarized in

Table 43 below.

87

Table 43. Lessons Learned Summary

Lesson Description Type

Order spare parts It is important to order spare parts in case anything

critical breaks. Project

Leave schedule space for

mistakes

It is important to plan for unexpected delays when setting

up a preliminary schedule – also ensure that the schedule

is reevaluated frequently.

Project

Multithreading in Java

Java multithreading using the synchronization keyword is

one of the simplest ways to implement thread-safe

programs.

Technical

UI development

Developing a user interface is challenging and

incorporeal. Its requirements depend to some extent on

different users, and there are numerous open-source tools

for UI construction.

Technical

Backend database design

Having a carefully constructed database format increases

the reliability and scalability of the system that it is a part

of.

Technical

Communicate purposefully

Ensuring that each team member receives all information

that they require to efficiently perform their tasks is

critical to the success of a project.

Team

Recognize external schedule

factors

Planning for external schedule interferences like known

holidays or periods of team member busyness is

important to building a realistic schedule.

Project

PCB fabrication challenges

Moving from a fully functional breadboard circuit design

to a PCB is often much more difficult than simply

etching and populating the PCB. Debugging PCBs is

difficult.

Technical

Team responsibility

Working on a team where each member can be relied

upon to complete their tasks on time and in a quality

manner helps to define a good project and encourages a

great result.

Team

Predict shipping delays

It is important to be aware of shipping delays when

determining when to order new parts, otherwise stagnant

periods of waiting for shipments could occur.

Project

17.2.2 Project Status

The HomeAlive project has been successfully completed as of 5/13/2015. This includes

submission of all deliverables to the project faculty advisor as well as participation in all of the project

speeches, demonstrations, and events. The HomeAlive team was able to successfully implement their

prototype home automation system including four devices, two gateways, the server, and a user interface.

These interacted primarily as expected with a few minor bugs remaining. The project will not be

continued in a definite way; however, personal experimentation with home automation systems by the

team members based on this project is expected.

88

18 Appendices

Figure 45. Thermostat Device PCB Layout

Figure 46. Outlet Adapter PCB Layout

89

Table 44. Whole System Testing

Test Name Component Under Test

Prototype Should

Pass

Prototype Has

Already Passed

Informally

Test Type I Test Type II Test Description Test

Conditions Test Measured

Value

End-to-End Delay Single (up)

Whole System Yes Maybe Timing Processing Speed &

Signal Delays

Does the whole system work fast enough for single messages? (d->ui)

Normal Time from device sent to UI received

End-to-End Delay Flood (up)

Whole System Yes No Timing Processing Speed &

Signal Delays

Does the whole system work fast enough for many messages? (d->ui)

Flood, rest normal

Time from device sent to UI received

End-to-End Delay Single (down)

Whole System Yes Yes Timing Processing Speed &

Signal Delays

Does the whole system work fast enough for single messages? (ui->d)

Normal Time from UI sent to device received

End-to-End Delay Flood (down)

Whole System Yes No Timing Processing Speed &

Signal Delays

Does the whole system work fast enough for many messages? (ui->d)

Flood, rest normal

Time from UI sent to device received

Gateway Unexpected Shutdown Recovery

Whole System Yes Maybe Unexpected Shutdown

Unexpected Use-case

Can the system recover from an unexpected shutdown of the gateway?

Unexpected restart, rest

normal

Time until operation resumes, number of missed/corrupted messages

Server Unexpected Shutdown Recovery

Whole System Yes No Unexpected Shutdown

Unexpected Use-case

Can the system recover from an unexpected shutdown of the server?

Unexpected restart, rest

normal

Time until operation resumes, number of missed/corrupted messages

Thermostat Unexpected Shutdown Recovery

Whole System Yes Maybe Unexpected Shutdown

Unexpected Use-case

Can the system recover from an unexpected shutdown of the thermostat?

Unexpected restart, rest

normal

Time until operation resumes, number of missed/corrupted messages

Outlet Adapter Unexpected Shutdown Recovery

Whole System Yes No Unexpected Shutdown

Unexpected Use-case

Can the system recover from an unexpected shutdown of the adapter?

Unexpected restart, rest

normal

Time until operation resumes, number of missed/corrupted messages

Knowledgeable User Testing (All)

Whole System Yes Maybe Robustness User Testing Have knowledgeable users evaluated the system experience?

Normal Some sort of survey with scales of 1-10?

Unknowledgeable User Testing (All)

Whole System Yes No Robustness User Testing Have unknowledgeable users evaluated the system experience?

Normal Some sort of survey with scales of 1-10?

90

Table 45. User Interface Testing

Test Name Component Under Test

Prototype Should

Pass

Prototype Has

Already Passed

Informally

Test Type I Test Type II Test Description

Test Conditions

Test Measured Value

UI Message Flood User Interface Yes No Robustness Possible Use-case

Can the UI continue to operate effectively during a received message flood?

Flood, rest normal

Number of messages/time before operation stopped or

disturbed

UI Continuous Running

User Interface Yes No Continuous

-Running Expected Use-case

Can the UI continue to operate effectively after long periods of run time?

Long times, rest normal

Time until operation stopped or disturbed

UI Hacker Resilience User Interface No No Security Custom Security

How hard would it be to 'hack' the system via the user-interface?

Normal Intangible…

Knowledgeable User Testing (UI)

User Interface Yes Maybe Robustness User

Testing Have knowledgeable users evaluated the UI experience?

Normal Some sort of survey with scales of 1-10?

Unknowledgeable User Testing (UI)

User Interface Yes No Robustness User

Testing Have unknowledgeable users evaluated the UI experience?

Normal Some sort of survey with scales of 1-10?

91

Table 46. Server Testing

Test Name Component Under Test

Prototype Should

Pass

Prototype Has

Already Passed

Informally

Test Type I Test Type II Test Description Test

Conditions Test Measured

Value

Server Processing Speed (up)

Server Yes Maybe Timing Processing

Speed Does the server process gateway messages at an acceptable rate?

Normal Time from received

to processed

Server Processing Speed (down)

Server Yes Yes Timing Processing

Speed Does the server process UI messages at an acceptable rate?

Normal Time from received

to processed

Server Message Flood

Server Yes Maybe Robustness Possible Use-case

Can the server continue to operate effectively during a received message flood?

Flood, rest normal

Number of messages/time

before operation stopped or disturbed

Server Bad Message Discard

Server No No Robustness Unexpected

Use-case

Can the server continue to operate effectively after receiving a bad message?

Bad message, rest normal

Continued operation as

expected

Server Continuous Running

Server Yes Maybe Continuous

-Running Expected Use-case

Can the server continue to operate effectively after long periods of run time?

Long times, rest normal

Time until operation stopped

or disturbed

Server Internet Connection Strength

Server Maybe Yes Robustness Unexpected

Use-case What is the server internet connection speed?

Normal Connection speed

(kbits/s ?)

Server Hacker Resilience

Server No No Security Custom Security

How hard would it be to 'hack' the system via the server's internet connection?

Normal Intangible…

92

Table 47. Gateway Testing

Test Name Component Under Test

Prototype Should

Pass

Prototype Has

Already Passed

Informally

Test Type I Test Type II Test Description Test

Conditions Test Measured

Value

Gateway Processing Speed (up)

Gateway Yes Yes Timing Processing

Speed Does the gateway process device messages at an acceptable rate?

Normal Time from received

to resent

Gateway Processing Speed (down)

Gateway Yes Yes Timing Processing

Speed Does the gateway process server messages at an acceptable rate?

Normal Time from received

to resent

Gateway Extreme Heat Resilience

Gateway No No Ambient Unexpected

Use-case Does the gateway work in conditions of extreme heat?

Hot, rest normal

Temperature max before operation

stopped or disturbed

Gateway Extreme Cool Resilience

Gateway No No Ambient Unexpected

Use-case Does the gateway work in conditions of extreme cold?

Cold, rest normal

Temperature min before operation

stopped or disturbed

Gateway Room Temp Operation

Gateway Yes Yes Ambient Expected Use-case

Does the gateway work in conditions of typical heat?

Normal Continued

operation as expected

Gateway Water Resistance

Gateway Maybe No Ambient Unexpected

Use-case Does the gateway work if it gets wet?

Wet, rest normal

Amount of water before operation

stopped or disturbed

Gateway Heat Dissipation

Gateway Yes No Continuous

-Running Expected Use-case

Does the gateway dissipate heat fast enough to run forever without overheating?

Long times, rest normal

Equilibrium temperature

reached for 'busy' and 'idle' periods

Gateway Message Flood

Gateway Yes Yes Robustness Possible Use-case

Can the gateway continue to operate effectively during a received message flood?

Flood, rest normal

Number of messages/time

before operation stopped or disturbed

Gateway Bad Message Discard

Gateway No No Robustness Unexpected

Use-case

Can the gateway continue to operate effectively after receiving a bad message?

Bad message, rest normal

Continued operation as

expected

93

Test Name Component Under Test

Prototype Should

Pass

Prototype Has

Already Passed

Informally

Test Type I Test Type II Test Description Test

Conditions Test Measured

Value

Gateway Continuous Running

Gateway Yes Maybe Continuous

-Running Expected Use-case

Can the gateway continue to operate effectively after long periods of run time?

Long times, rest normal

Time until operation stopped

or disturbed

Gateway Internet Connection Strength

Gateway Maybe Yes Robustness Unexpected

Use-case What is the gateway internet connection speed?

Normal Connection speed

(kbits/s ?)

Gateway Hacker Resilience

Gateway No No Security Custom Security

How hard would it be to 'hack' the system via the gateway's internet connection?

Normal Intangible…

Gateway Casing Strength

Gateway Maybe No Physical Strength

Physical Strength

Does the gateway's casing adequately protect its circuitry?

Typical impact, rest

normal

Force of impact before operation

stopped or disturbed

Gateway SW Unit Tests

Gateway No No Software Unit Tests Has the gateway SW passed thorough unit tests?

All possible cases

SW-defined tests pass rate %

Gateway SW Module Tests

Gateway Maybe Maybe Software Module

Tests Has the gateway SW passed module-level tests?

All normal and likely

invalid cases

SW-defined tests pass rate %

94

Table 48. Devices Testing

Test Name Component Under Test

Prototype Should

Pass

Prototype Has

Already Passed

Informally

Test Type I Test Type II Test Description Test

Conditions Test Measured Value

Thermostat Extreme Heat Resilience

Thermostat No No Ambient Unexpected

Use-case Does the thermostat work in conditions of extreme heat?

Hot, rest normal

Temperature max before operation

stopped or disturbed

Thermostat Extreme Cool Resilience

Thermostat No No Ambient Unexpected

Use-case Does the thermostat work in conditions of extreme cold?

Cold, rest normal

Temperature min before operation

stopped or disturbed

Thermostat Room Temp Operation

Thermostat Yes Yes Ambient Expected Use-case

Does the thermostat work in conditions of typical heat?

Normal Continued operation

as expected

Thermostat Water Resistance

Thermostat No No Ambient Unexpected

Use-case Does the thermostat work if it gets wet?

Wet, rest normal

Amount of water before operation

stopped or disturbed

Thermostat Heat Dissipation

Thermostat Yes No Continuous

-Running Expected Use-case

Does the thermostat dissipate heat fast enough to run forever without overheating?

Long times, rest normal

Equilibrium temperature reached

for 'busy' and 'idle' periods

Thermostat Arduino Battery Life

Thermostat Yes No Power Usage

Expected Use-case

Is the thermostat's Arduino battery life sufficient?

Normal Time from full charge

to battery death

Thermostat Arduino Spike Resilience

Thermostat Maybe No Power Usage

Unexpected Use-case

Do power spikes destroy the thermostat's control circuit?

Power spike, rest normal

Continued operation as expected or fuse

blown

Thermostat Message Flood

Thermostat Yes Maybe Robustness Possible Use-case

Can the thermostat continue to operate effectively during a received message flood?

Flood, rest normal

Number of messages/time before operation stopped or

disturbed

Thermostat Bad Message Discard

Thermostat No No Robustness Unexpected

Use-case

Can the thermostat continue to operate effectively after receiving a bad message?

Bad message, rest normal

Continued operation as expected

Thermostat Continuous Running

Thermostat Yes No Continuous

-Running Expected Use-case

Can the thermostat continue to operate effectively after long periods of run time?

Long times, rest normal

Time until operation stopped or disturbed

Thermostat Casing Strength

Thermostat Maybe No Physical Strength

Physical Strength

Does the thermostat's casing adequately protect its circuitry?

Typical impact, rest normal

Force of impact before operation stopped or

disturbed

95

Test Name Component Under Test

Prototype Should

Pass

Prototype Has

Already Passed

Informally

Test Type I Test Type II Test Description Test

Conditions Test Measured Value

Thermostat SW Unit Tests

Thermostat No No Software Unit Tests Has the thermostat SW passed thorough unit tests?

All possible cases

SW-defined tests pass rate %

Thermostat SW Module Tests

Thermostat Maybe Maybe Software Module

Tests Has the thermostat SW passed module-level tests?

All normal and likely invalid

cases

SW-defined tests pass rate %

Thermostat Manual Read Syncing

Thermostat Yes Maybe Robustness User Testing

Does the system allow manual button presses on the thermostat and handle them without getting out of sync?

Normal Continued operation

as expected

Outlet Adapter Extreme Heat Resilience

Outlet Adapter

No No Ambient Unexpected

Use-case Does the adapter work in conditions of extreme heat?

Hot, rest normal

Temperature max before operation

stopped or disturbed

Outlet Adapter Extreme Cool Resilience

Outlet Adapter

No No Ambient Unexpected

Use-case Does the adapter work in conditions of extreme cold?

Cold, rest normal

Temperature min before operation

stopped or disturbed

Outlet Adapter Room Temp Operation

Outlet Adapter

Yes Yes Ambient Expected Use-case

Does the adapter work in conditions of typical heat?

Normal Continued operation

as expected

Outlet Adapter Water Resistance

Outlet Adapter

No No Ambient Unexpected

Use-case Does the adapter work if it gets wet?

Wet, rest normal

Amount of water before operation

stopped or disturbed

Outlet Adapter Heat Dissipation

Outlet Adapter

Yes No Continuous

-Running Expected Use-case

Does the adapter dissipate heat fast enough to run forever without overheating?

Long times, rest normal

Equilibrium temperature reached

for 'busy' and 'idle' periods

Outlet Adapter Spike Resilience

Outlet Adapter

Yes No Power Usage

Unexpected Use-case

Do power spikes destroy the adapter?

Power spike, rest normal

Continued operation as expected or fuse

blown

Outlet Adapter Message Flood

Outlet Adapter

Yes No Robustness Possible Use-case

Can the adapter continue to operate effectively during a received message flood?

Flood, rest normal

Number of messages/time before operation stopped or

disturbed

Outlet Adapter bad Message Discard

Outlet Adapter

No No Robustness Unexpected

Use-case

Can the adapter continue to operate effectively after receiving a bad message?

Bad message, rest normal

Continued operation as expected

96

Test Name Component Under Test

Prototype Should

Pass

Prototype Has

Already Passed

Informally

Test Type I Test Type II Test Description Test

Conditions Test Measured Value

Outlet Adapter Continuous Running

Outlet Adapter

Yes No Continuous

-Running Expected Use-case

Can the adapter continue to operate effectively after long periods of run time?

Long times, rest normal

Time until operation stopped or disturbed

Outlet Adapter Measurement Accuracy (typical)

Outlet Adapter

Yes Maybe Accuracy Expected Use-case

Does the adapter accurately measure power in the expected range?

Normal Difference between measured wattage and actual wattage

Outlet Adapter Measurement Accuracy (atypical)

Outlet Adapter

Yes No Accuracy Unexpected

Use-case

Does the adapter accurately measure power in the unexpected range?

Higher/lower wattage

plugged in, rest normal

Difference between measured wattage and actual wattage

Outlet Adapter Rapid Toggling

Outlet Adapter

Yes No Robustness Possible Use-case

Does rapidly plugging and unplugging the adapter destroy it?

Plugged/unplugged rapidly, rest normal

Time between plug and unplug before

operation stopped or disturbed (fuse blown)

Outlet Adapter Casing Strength

Outlet Adapter

Maybe No Physical Strength

Physical Strength

Does the adapter's casing adequately protect its circuitry?

Typical impact, rest normal

Force of impact before operation stopped or

disturbed

Outlet Adapter SW Unit Tests

Outlet Adapter

No No Software Unit Tests Has the adapter SW passed thorough unit tests?

All possible cases

SW-defined tests pass rate %

Outlet Adapter Module Tests

Outlet Adapter

Maybe No Software Module

Tests Has the adapter SW passed module-level tests?

All normal and likely invalid

cases

SW-defined tests pass rate %

97

Table 49. Interface Testing

Test Name Component Under

Test

Prototype Should

Pass

Prototype Has

Already Passed

Informally

Test Type I Test Type II Test Description Test

Conditions Test Measured Value

UI Multiple Identical Logins

Link UI/Server Yes No Robustness Possible Use-

case

Can the system handle multiple logins of the same household on separate different devices?

Normal Continued operation as expected or feedback

message

UI Multiple Separate Logins

Link UI/Server Yes No Accuracy Expected Use-

case

Can the system handle multiple logins of the different households on different devices?

Normal Continued operation as

expected

AMQP Hacker Resilience

Link Server/Gateway

Maybe Yes Security Built-in Security

How hard would it be to 'hack' the system via the AMQP clients?

Normal Intangible…

XBee Range Open Pro Link

Device/Gateway Yes No Range

Signal Strength

What are the XBee Pro chips range?

Open Field Distance of consistent,

accurate messages

XBee Range Typical Pro Link

Device/Gateway Yes No Range

Signal Strength

Do the XBee Pro chips have an acceptable range?

Normal Distance of consistent,

accurate messages

XBee Range Open Std Link

Device/Gateway Yes No Range

Signal Strength

What are the XBee Std chips range?

Open Field Distance of consistent,

accurate messages

XBee Range Typical Std Link

Device/Gateway Yes Maybe Range

Signal Strength

Do the XBee Std chips have an acceptable range?

Normal Distance of consistent,

accurate messages

XBee Pro Noise Resilience

Link Device/Gateway

Yes No Range Signal

Accuracy Do the XBee Pro chips work in noisy environments?

Noisy, rest normal

Distance of consistent, accurate messages

XBee Pro Interference Resilience

Link Device/Gateway

Yes No Range Signal

Accuracy Do the XBee Pro chips work in dampened environments?

Dampened environment, rest normal

Distance of consistent, accurate messages

XBee Std Noise Resilience

Link Device/Gateway

Yes No Range Signal

Accuracy Do the XBee Std chips work in noisy environments?

Noisy, rest normal

Distance of consistent, accurate messages

XBee Std Interference Resilience

Link Device/Gateway

Yes No Range Signal

Accuracy Do the XBee Std chips work in dampened environments?

Dampened environment, rest normal

Distance of consistent, accurate messages

XBee Mesh Range Effect

Link Device/Gateway

Yes Yes Range Signal

Strength

How much extra range does the XBee mesh network give as compared to a nonmesh network?

Normal

Difference in distance of consistent, accurate

messages with and without

XBee Encryption Effectiveness

Link Device/Gateway

Yes Yes Security Built-in Security

Does the XBee encryption stop communication to nodes without the encryption key?

Normal Ability of node without

key to communicate

XBee Hacker Resilience Link

Device/Gateway Maybe Yes Security

Built-in Security

How hard would it be to 'hack' the system via the XBee network?

Normal Intangible…

98

Figure 47. Break-Even Analysis

99

Figure 48. Material Costs Sheet

100

Figure 49. Material Costs Sheet (cont.)

Figure 50. Fixed & Variable Costs Sheet Break-Downs with Totals

101

Figure 51. Fixed Cost of Goods Sold

102

Figure 52. Variable Cost of Goods Sold

Figure 53. Variable Cost of Operation

103

Figure 54. Variable Cost of Operation (cont.)

104

Figure 55. Fixed Cost of Operation.

105

Figure 56. Cash Flow Statement (Quarterly) Year 1

Figure 57. Cash Flow Statement (Quarterly) Year 2.

106

Figure 58. Cash Flow Statement (Quarterly) Year 3

Figure 59. Cash Flow Statement (Quarterly) Revenue Explanation.

107

Figure 60. Ratio Analysis Calculation Year 1 & 2

108

Figure 61. Ratio Analysis Calculation Year 3

109

Figure 62. HomeAlive Prototype Devices

Figure 63. HomeAlive Prototype Thermostat

Figure 64. HomeAlive Prototype Outlet Adapter

110

19 References & Bibliography

[1] “ XBee Pro Module - Series 1 - 60mW with Wire Antenna - XBP24-AWI-001”, Adafruit, [online]

2014, https://www.adafruit.com/products/964 (Accessed: 8 November, 2014).

[2] “USB WiFi (802.11b/g/n) Module with Antenna for Raspberry Pi”, Adafruit, [online] 2014,

https://www.adafruit.com/products/1030 (Accessed: 8 November, 2014).

[3] “VideoSecu 12V DC 500mA Regulated CCTV Camera Power Supply UL Listed Switching 100V-

240V AC to DC 2.1mm x 5.5mm Plug Power Adapter MCQ”, Amazon, [online] 2014, from

http://www.amazon.com/VideoSecu-Regulated-Switching-100V-240V-

Adapter/dp/B000VRL632/ref=sr_1_11?s=electronics&ie=UTF8&qid=1415500451&sr=1-

11&keywords=power+supply+ac+to+dc (Accessed: 8 November, 2014).

[4] “Adafruit Assembled Pi Cobbler Breakout + Cable for Raspberry Pi”, Adafruit, [online] 2014,

http://www.adafruit.com/products/914?gclid=CLOP3ZnC7MECFQYvaQodZicA9Q (Accessed: 8

November, 2014).

[5] “Waterproof Plastic Electric Project Case Junction Box”, Amazon, [online] 2014,

http://www.amazon.com/Waterproof-Plastic-Electric-Junction-60x36x25mm/dp/B00O9Y633G/

(Accessed: 8 November, 2014)

[6] J. VanAntwerp, “Design Norm Lectures”, in ENGR-325 Lectures, 2014. (Accessed: 8 November,

2014).

[7] “System Properties Comparison Microsoft SQL Server vs. MySQL vs. Oracle”, DB-Engines,

[online]2014, http://db-engines.com/en/system/Microsoft+SQL+Server%3BMySQL%3BSQLite

(Accessed: 8 November, 2014).

[8] “MySQL Differences from Standard SQL”, MySQL, [online] 2014, http://dev.mysql.com/doc/mysql-

reslimits-excerpt/5.5/en/differences-from-ansi.html (Accessed: 8 November, 2014).

[9] “What is a Web Framework?”, RailsGuides, [online] 2014,

http://guides.rubyonrails.org/getting_started.html (Accessed: 8 November, 2014).

[10] “What is a Web Framework?”, Everything I Know About Phython, [online] 2014,

http://www.jeffknupp.com/blog/2014/03/03/what-is-a-web-framework/ (Accessed: 8 November, 2014).

[11] “RoR MVC, ORM, Frameworks”, RailsGuides, [online] 2014,

http://guides.rubyonrails.org/getting_started.html (Accessed: 8 November, 2014).

[12] “Comparison of Web Application Framework”, Wikipedia, [online] 2014,

http://en.wikipedia.org/wiki/Comparison_of_web_application_frameworks (Accessed: 8 November,

2014).

[13] “Web MVC framework”, RailsGuides, [online] 2014,

http://guides.rubyonrails.org/getting_started.html (Accessed: 8 November, 2014).

[14] “Web MVC framework”, Spring Framework Reference Documentation, [online] 2014,

http://docs.spring.io/spring/docs/current/spring-framework-reference/html/ (Accessed: 8 November,

2014).

111

[15] “Frequency Asked Questions”, MQTT, [online] 2014, http://mqtt.org/faq ((Accessed: 8 November,

2014).

[16]“SparkFun Xbee Dongle”,SparkFun,[online] 2014, https://www.sparkfun.com/products/11697

(Accessed: 8 November 2014)

[17] ]“SparkFun Xbee Sheild”,SparkFun,[online] 2014, https://www.sparkfun.com/products/12847

(Accessed: 8 November 2014)

[18] “SparkFun Uno”, SparkFun, [online],2014, https://www.sparkfun.com/products/11021 (Accessed: 8

November 2014)

[19] “Arduino Nano I/O Sheild”, Amazon [online],2015, http://www.amazon.com/Arduino-Nano-I-O-

Shield/dp/B00BD6KEYC (Accessed: 22 April 2015)

[20] “Ardunio Nano”, Amazon,[online], 2015, http://www.amazon.com/SainSmart-Nano-v3-0-

Compatible-Arduino/dp/B00761NDHI (Accessed: 22 April 2015)

[21] “Arduino Stackable Header”, SparkFun, [online], 2015, https://www.sparkfun.com/products/9279

(Accessed: 28 April 2015)

[22] “9V Battery Connector”, Amazon, [online], 2015, http://www.amazon.com/Piece-Battery-Power-

Cable-Arduino/dp/B00CDYG60E (Accessed: May 05 2015)

[23] “Honeywell Programmable Thermostat”, Amazon,[online], 2015,

http://www.amazon.com/Honeywell-RTH6350-5-2-Programmable-Thermostat/dp/B00421BGHY

(Accessed: May 05,2015)

[24] “RMS to DC Converter”, DigiKey,[online], 2015, http://www.digikey.com/product-

detail/en/AD736JNZ/AD736JNZ-ND/751028 (Accessed: April 22,2015)

[25] “DC-DC Converter”, DigiKey,[online], 2015, http://www.digikey.com/product-

detail/en/MAX1044CPA%2B/MAX1044CPA%2B-ND/947733 (Accessed: April 22,2015)

[26] “General Purpose Relay”, DigiKey,[online], 2015, http://www.digikey.com/product-detail/en/G5CA-

1A-E%20DC5/Z2161-ND/699988 (Accessed: April 22,2015)

[27] “Current Transducer”, DigiKey,[online], 2015, http://www.digikey.com/product-

detail/en/ACS712ELCTR-05B-T/620-1189-1-ND/1284606 (Accessed: April 22,2015)

[28] “Current Sensor”, DigiKey,[online], 2015, http://www.digikey.com/product-detail/en/AD628ARZ-

R7/AD628ARZ-R7CT-ND/3903355 (Accessed: April 22,2015)

[29] “RMS to DC Converter”, DigKey [online], 2015, http://www.digikey.com/product-

detail/en/AD8436ARQZ-R7/AD8436ARQZ-R7TR-ND/3542851 (Accessed: April 22, 2015)

[30] “Raspberry Pi”, Raspberry Pi, [online], 2015, https://www.raspberrypi.org/ (Accessed: November

08, 2014)

[31] “Beagle Board”, Beagle Board,[online], 2015, http://beagleboard.org/ (Accessed: November 08,

2014)

[32] “Arduino Uno”, Arduino Uno, [online], 2015, http://www.arduino.cc/en/Main/ArduinoBoardUno

(Accessed: November 08 2014)