Click here to Skip to main content
65,938 articles
CodeProject is changing. Read more.
Articles / IoT

IoT Path To Product: Smart Home

4.17/5 (3 votes)
19 Jul 2016CPOL28 min read 11.1K  
This solution monitors the status of a home’s front door and garage door for increased security. The gateway gathers data from a doorbell, door lock, stepper motors, and a garage door application for edge data analytics.

This article is for our sponsors at CodeProject. These articles are intended to provide you with information on products and services that we consider useful and of value to developers

Get access to the new Intel® IoT Developer Kit, a complete hardware and software solution that allows developers to create exciting new solutions with the Intel® Galileo and Intel® Edison boards. Visit the Intel® Developer Zone for IoT.

To demonstrate a smart home vertical rapid path to product edge IoT solution using cloud data analytics, a proof of concept was created using the Intel® IoT Developer Kit and Grove* IoT Commercial Developer Kit, and scaled to an industrial solution using an Intel® IoT Gateway, industrial sensors, Intel® IoT Gateway Software Suite, Intel® XDK IoT Edition, and IBM Bluemix* cloud services. This solution monitors the status of a home’s front door and garage door for increased security. The gateway gathers data from a doorbell, door lock, stepper motors, and a garage door application for edge data analytics.

The promise of the Internet of Things (IoT) is to provide connectivity that lets us control and be aware of countless points of presence, everywhere and all the time. As the center of every consumer’s world, the home is possibly the most vital site where this vision is unfolding. In short, when we are away from our homes, we would like to know that they are secure, and technology can play a rich role in making it so.

Everyone has had the nagging suspicion that they left the door unlocked or the garage door open, often when it was too late to conveniently double-check. And in a world of instantaneous access to infinite information from anywhere, anytime, that can be hard to take. Many of us are ready to adopt (and pay for) solutions that can remove this annoyance.

While many products are available on the general market to enable the smart home, this segment is still in its infancy, and insufficient interoperability exists among products and components from various vendors. Intel has identified value to building solutions using standards-based, open platforms. This approach would allow for a whole- home approach that enables simple implementation of smart devices, with security and monitoring through the cloud. The corresponding commercial potential for these products and services is substantial.

Intel undertook a development project to investigate this and other opportunities associated with building systems for the smart home. The project drew inspiration in large part from the existing solution blueprint of the smart home platform from Yoga Systems. This document recounts the course of that project development effort. It begins with an abstract description of a structured project methodology, divided into phases, and then recounts the process of the project’s development in detail, phase by phase.

Interested parties can use this narrative to retrace the steps taken by the Intel project team in developing the smart home path to product. Perhaps more importantly, however, it can be generalized as a set of guidelines to address the needs of other types of projects. Intel makes this document freely available and encourages the use of this methodology and process to drive inquiry, invention, and innovation for the IoT.

This article contains an overview of the IoT Path-to-Product: Smart Home. To see the project tutorial, see IoT Path-to-Product: How to Build the Smart Home Prototype.

Visit GitHub for this project's latest code samples and documentation.

Methodology

By its nature, the IoT embraces open- ended innovation, with an endless diversity of projects to add intelligence to objects from the simple to the complex, and from the mundane to the exotic. At the same time, every project builds on experience the industry has gained from IoT projects that have gone before, and best practices suggest structural elements in common among IoT projects in general.

To take advantage of those commonalities and help increase the chances of success during development, Intel has developed a structured approach to IoT project development. This approach consists of a six-phase model that guides the entire path to product, which begins with the first glimmer of an idea and follows through until the final solution is in commercial deployment. The six- phase model is intended to be general enough that it can be adapted to the needs of any IoT project.

Initiation Phases (1-3)

The first three phases of the project methodology are investigative. They focus on ideation and assessing the potential of the project to solve a given problem, in preparation for ultimately leading to a commercially viable product. As such, these phases value brainstorming and proof of concept over rigorously addressing the finer points of design.

Rapid prototyping is facilitated by using the Grove IoT Commercial Developer Kit, which consists of an Intel® NUC system, Intel® IoT Gateway Software Suite, and the Grove Starter Kit Plus (manufactured by Seeed). The project also uses the Arduino* 101 board.

Note: Known in the United States as "Arduino 101," this board is known elsewhere as "Genuino* 101." It is referred to throughout the rest of this document as the "Arduino 101" board.

Phase 1

Define the opportunity that the project will take advantage of. The first step of an IoT project is to identify the problem or opportunity that the project will address. Documentation at this stage should identify the opportunity itself, the value of the solution (to end users as well as the organizations that build and implement it), and limitations of the project concept, including design challenges and constraints.

Phase 2

Design a proof of concept to take advantage of the opportunity. The initial solution design proposes a practical approach to building the solution, including hardware, software, and network elements. The design must address the design challenges and constraints identified in Phase 1 to the extent that is possible before building a prototype, including due consideration of factors such as cost and security.

Phase 3

Build and refine the proof of concept. The solution prototype is based on the design established in Phase 2, making and documenting changes as needed. Design changes based on shortcomings and additional opportunities identified during testing should be documented as part of this phase.

Completion Phases (4 – 6)

The last three phases of the project methodology proceed only after the decision has been made to go forward with productizing the solution. As such, these phases are explicitly concerned with hardening, in terms of stability, security, and manageability, preparing the product for mass production, and monetizing it to realize its commercial potential.

The completion phases of the project involve shifting the solution to industrial-grade sensors and related components, building it out using a commercial-grade gateway, and finalizing the feature set.

Phase 4:

Produce a solid beta version. Once the project has been approved as a viable solution to develop toward production, the next step is to produce a product-oriented version that is explicitly intended to finalize the design. This version represents a significant investment in resources, including commercial- grade sensors and other components, as well as a commercial IoT gateway.

Phase 5

Evaluate functionality and add features. The completed beta version of the solution is tested to verify that it functions correctly according to the design parameters. As part of the testing process, the project team also identifies additional features and functionality, which are incorporated into the solution to make it more robust and valuable to end users.

Phase 6

Finalize design and move into production. Once the product is feature-complete, the team hardens the solution by adding advanced manageability and security features, as well as optimizing the design as needed to enhance factors such as marketability and efficiency of manufacturing. The production user interface (UI) for the solution is also finalized. This phase also includes final planning for merchandising and marketing the solution before moving into full production.

Phase 1: Defining the Opportunity

Sensors to detect the status of a door being locked or unlocked, a doorbell being rung, and a garage door being open or closed provide rudimentary data, but the significance of that data can be profound. The duality between the simplicity of this information and its significance is the basis for the commercial value potential of this solution.

The core group of project initiators at Intel determined that a smart home is viable as the basis for a potential project to demonstrate IoT capabilities and the project methodology described here. That core group identified skill sets that were likely to be required during the project, including project management, programming, cloud architecture, and documentation. Based on that list of required skills, the core group formed the full project team, with personnel on the project mostly drawn from Intel employees, with external personnel included in a small number of instances to round out the expertise of the team.

The full project team’s first order of business was to quantify the potential opportunity associated with the project, as the basis for the initial prototype design. The core opportunity for this use case was identified as integrating programmatic control and notification associated with certain functions of the smart home, including the following:

  • Front door: The project will lock and unlock the door and provide status about the locked/unlocked state as well as the open/closed state of the door on the physical model.
  • Doorbell: When the doorbell button is pushed on the model, a visual representation will be displayed on the administration application and the mobile application.
  • Garage door: Users can send commands from the mobile application to raise and lower the garage door. The mobile application will also display the door’s progress as it opens or closes and provide an alert if the door is blocked from closing.

Sensors will detect and send this information to the cloud to enable logging and analytics, as well as remote secure access so a user can view event notifications and status of the various smart-home elements listed above.

The team also identified opportunities to further expand the solution that it designated as being out of scope for this project. These included managed service offerings for both residential and commercial customers, including incorporation into existing solutions to enrich home-security offerings.

Phase 2: Designing the Proof-of-Concept Prototype

The project team determined that, for this project to be as useful as possible for the developer community, it should be based on readily available parts and technologies. Based on that decision, it was decided to limit the bill of materials to the Grove IoT Commercial Developer Kit, Intel® IoT Developer Kit, and Intel® IoT Gateway Software Suite (https://software.intel.com/en-us/node/633283), using software technologies that are widely used in the industry and available at low or no cost, with the use of free open-source software (FOSS) wherever practical.

To accelerate the prototype stage and reduce its complexity, the team elected to build the local portion of the prototype as a bench model that would consist of the compute platform and sensors, without incorporating an actual scale model of a smart home, although such a model would be added at a future stage of the project.

Prototype Hardware Selection

The Intel® NUC Kit DE3815TYKHE small-form-factor PC was chosen for this project. This platform is pictured in Figure 1, and its high-level specifications are given in Table 1. In addition to its robust performance, the team felt that, as Intel’s most recently introduced hardware platform specifically targeting IoT, it was a forward-looking choice for this demonstration project. Based on the Intel® Atom™ processor E3815, the Intel NUC offers a fanless thermal solution, 4 GB of onboard flash storage (and SATA connectivity for additional storage), as well as a wide range of I/O ports. The Intel NUC is conceived as a highly compact and customizable device that provides capabilities at the scale of a desktop PC.

To simplify the process of interfacing with sensors, the team elected to take advantage of the Arduino ecosystem using the Arduino 101 board, also shown in Figure 1, with specifications given in Table 1. This board makes the Intel NUC both hardware and pin compatible with Arduino shields, in keeping with the open-source ideals of the project team. While Bluetooth* is not used in the current iteration of the project, the board does have that functionality, which the team is considering for future use.

Table 1. Prototype hardware use in the smart home project

  Intel® NUC Kit DE3815TYKHE Arduino* 101 Board
Processor / Microcontroller Intel® Atom™ processor E3815 (512K Cache, 1.46 GHz) Intel® Curie™ Compute Module @ 32 MHz
Memory 8 GB DDR3L-1066 SODIMM (max)
  • 196 KB flash memory
  • 24 KB SRAM
Networking / IO Integrated 10/100/1000 LAN
  • 14 Digital IO pins
  • 6 Analog IO pins
Dimensions 190 mm x 116 mm x 40 mm 68.6 mm x 53.4 mm
Specifications Full specs Full specs

Image 1

Figure 1. Intel® NUC Kit DE3815TYKHE and Arduino* 101 board

For the sensors and other components needed in the creation of the prototype, the team chose the Grove Starter Kit for Arduino (manufactured by Seeed Studio), which is based on the Grove Starter Kit Plus used in the Grove IoT Commercial Developer Kit. This collection of components is available at low cost, and because it is a preselected set of parts, it reduces the effort required to identify and procure the bill of materials for IoT prototypes in general. Selection of sensors and other components for the prototype (detailed in the following section) are guided by key data that includes the following:

  • Locked/unlocked status of the front door
  • Open/closed status of the front door
  • Open/closed status of the garage door
  • Blocked/unblocked status of the garage door
  • Events: doorbell ring, lock/unlock front door, open/close front door, open/close garage door, block garage door

Prototype Software Specification

For the prototype OS, the team considered Yocto Linux* as well as Intel® IoT Gateway Software Suite. Yocto Linux supports the project’s ideal of using FOSS, and it offers a high degree of flexibility, as well as robust control over the source code and the ability to create a custom lightweight embedded OS that is tailored to the needs of the system. Intel® IoT Gateway Software Suite, on the other hand, provides an out-of-the-box implementation, without requirements for customization. It also provides Node- RED functionality for development. The team identified this combination of factors as a best practice for prototype development, and so Intel® IoT Gateway Software Suite was chosen as the OS for the prototype.

The following applications were identified to be developed as part of the solution:

  • Control application will run on the smart-home model itself, gathering data from sensors and handling operation of the electromechanical aspects of the solution (for example, opening/closing the garage door), as well as data exchange with both human users (that is, through the administration and mobile applications) and with the cloud.
  • Administration application will operate on a PC or tablet and allow for a detailed view into the operation of the smart home, including events, status, and logs, as well as access to the cloud data and analytics.
  • Mobile application will operate on a smartphone or other mobile device, enabling a customer to open and close the garage door as well as monitor the progress of the door as it opens and closes or is blocked.

Phase 3: Building and Refining the Proof of Concept Prototype

Using the Intel® NUC Kit DE3815TYKHE, the Arduino 101 board, and the Grove Starter Kit Plus IoT Edition, the team developed the proof of concept prototype illustrated in Figure 2. The prototype is built as a benchtop proof of concept that is not attached to mechanical parts such as working doors, which the project team determined are not required at this stage. Instead, for example, the rotary angle sensor is used to simulate the locking and unlocking of the front door, the stepper motor stands in for the garage door, and a simple button functions as the doorbell button would in a full model of the smart home.

Image 2

Figure 2. Smart home proof-of-concept prototype

The bill of materials for the prototype is summarized in Table 2.

Table 2. Smart home prototype components

Component Details
Base system

 

Intel® NUC Kit DE3815TYKHE

http://www.intel.com/content/www/us/en/support/boards-and-kits/intel-nuc-kits/intel-nuc-kit-de3815tykhe.html

Arduino* 101 Board

https://www.arduino.cc/en/Main/ArduinoBoard101

USB Type A to Type B Cable

For connecting Arduino 101 board to NUC

Components from Grove* Starter Kit Plus IoT Edition

Base Shield V2

http://www.seeedstudio.com/depot/Base-Shield-V2-p-1378.html

Gear Stepper Motor with Driver

http://www.seeedstudio.com/depot/Gear-Stepper-Motor-with-Driver-p-1685.html

Button Module

http://www.seeedstudio.com/depot/Grove-Button-p-766.html

Touch Sensor Module

http://www.seeedstudio.com/depot/Grove-Touch-Sensor-p-747.html

Light Sensor Module

http://www.seeedstudio.com/depot/Grove-Light-Sensor-p-746.html

Rotary Sensor Module

http://www.seeedstudio.com/depot/Grove-Rotary-Angle-Sensor-p-770.html

Red LED

http://www.seeedstudio.com/depot/Grove-Red-LED-p-1142.html

LCD with RGB Backlight Module

http://www.seeedstudio.com/depot/Grove-LCD-RGB-Backlight-p-1643.html

Buzzer Module

http://www.seeedstudio.com/depot/Grove-Buzzer-p-768.html

The project team also identified that the smart-home prototype should provide local functionality in cases of cloud outage or poor Internet connectivity.

The control application used in the proof-of-concept prototype was written in JavaScript*. It accesses IBM Bluemix to transfer data to and from the mobile and administration applications to support functions that include opening and closing the garage door, locking and unlocking the front door, as well as for notifications of events such as the doorbell ringing. The mobile application was written in JavaScript for use in a web browser, to avoid the necessity of migrating the application to multiple smartphone platforms.

The development environment used to develop the software for this solution was the Intel® XDK IoT Edition, which is included in the Grove IoT Commercial Developer Kit and can be downloaded free of charge. It enables developers to create and run Node.js applications directly on Intel® architecture-based IoT platforms, including the Intel® NUC Kit DE3815TYKHE, as well as remote debugging capabilities. Node-RED is also a development option.

In order to access I/O on the Intel NUC, it is necessary to declare MRAA, which is a C/C++ library with bindings to JavaScript and Python*, to interface with other platforms. It provides a structured and sane API, where port names and numbering match the physical hardware. For more information, visit GitHub. In addition, the development of this solution used Firmata, which allows for programmatic interaction with the Arduino development environment, taking advantage of Arduino’s hardware abstraction capabilities. Abstracting Firmata using Libmraa enables greater programmatic control of I/O on the Intel NUC, simplifying the process of gathering data from sensors. UPM provides the specific function calls that are used to access sensors.

The smart home proof-of-concept prototype includes an activation button for the garage door, an activation button and buzzer for the doorbell, a touch sensor to identify the open/ closed status of the front door, a rotary angle sensor to simulate the locking and unlocking of the front door, and a backlit RGB LCD display that shows the open/closed status of the garage door and front door, as well as displaying a message when the doorbell is rung. The prototype also includes indicator LEDs that show the open/closed status of the garage door.

The smart-home software application, which is built in Node.js, collects input data from the sensors and displays information on the LCD display. If the "Door Open" message is displayed on the LCD, the green LED is lit. If the "Door Close" message is displayed on the LCD, the red LED is lit. The application can also control a stepper motor to open and close an actual garage door, although for the sake of simplicity, the motor is not implemented in the proof-of-concept prototype.

Phase 4: Producing a Solid Beta Version

Once the proof of concept for the smart home was completed, the project team determined that the functionality was sufficiently successful to proceed with building a production version. The solution as a whole was conceived at this stage as including the following parts:

  • Physical model of the home, built to scale and including the functional parts highlighted in the solution: the doorbell, front door, garage door, and related systems.
  • Gateway, which is purchased as a commercial product based on Intel architecture and implemented using custom-developed software.
  • Client application, implemented in JavaScript, which is used to control the solution as a whole and to generate and access cloud-based analytics.
  • Cloud analytics, based on IBM Bluemix, which allow for the development of insights to improve business processes, based on usage data from the vending machine over time.

Selecting Components for the Beta Version of the Project

An early effort in the completion phases of the project involved selecting the specific components that would make up the final solution in production.

Smart-Home Model Procurement

Whereas the team had elected to create the proof-of-concept prototype as a board-level simulation of a smart home, it decided that the production version was to be based on a scale model of an actual house. The team engaged an external fabricator with expertise in building sophisticated, functional scale models. The initial specification for the smart-home model and an artist’s rendering of the finished model are shown in Figure 3.

Other key decisions to be made at this stage included the choice of industrial- grade sensors, an Intel architecture- based gateway, a cloud service for data storage and analytics, and software technologies for the client application.

Sensors and Related Components Selection

Industrial-grade sensors and related components to replace those from the Grove Starter Kit that were used in the proof-of-concept prototype are detailed in Table 3.

Custom model house built at 1/12 scale from tight-ply plywood with metal reinforcement, an approximate size of three feet in each dimension, and the following components:

  • Manually-opened front door with Intel-provided sensors to detect open/closed status and operable doorbell button.
  • Power-operated garage door with Intel-provided stepper motor and sensors to detect down and up end of travel, plus a small nylon shear screw to prevent damage if door is blocked.

Image 3

Figure 3. A working sketch of a smart-home model for the production solution

Doors and roof will be of modular construction and removable for full access during testing and diagnostics.

Table 3. Production smart home components

Component Description Details
Smart-Home Model Scale Model Custom Fabricated
IoT Gateway Dell iSeries Wyse* 3290 IoT Gateway More information
USB Type A to Micro-USB Type B Cable Connects I2C/GPIO controller to Gateway
Power Supply 12V 10A More information
DC 1 to 2 Splitter Cable To power gateway and sensors from same PS More information
Logic Level Converter - Bidirectional Adapter Converts between 2 different logiclevels (for example, 3.3V to 12V) More information
IIC GPIO Expander I2C to 16xGPIO breakout using PCA9555 More information
FT4222H USB Eval 2.0 to Quad SPI Expander USB to SPI/I2C/4xGPIO expander More information
Applied Motion NEMA23High Torque Stepper 8 wire, 0.71A, 22AWG, torque:127 to 177 oz-in More information
Applied Motion STR2Stepper Driver 12-48V in - 2.2A capable steppermotor driver with various controls More information
ST12C Right Angle Bracket Mounting bracket for DM series IR reflectors More information
RL204-1 Reflector Pad Rectangular IR reflector pad More information
DM Series Photoelectric IR Reflector Photo TBLR 12mm 10-30vdc four-wire NPN polar ret-refl metal pigtail More information
OMRON GSL-1 Switch Magnetic switch More information
SWITCH PUSH SPST-NO 0.15A 24V Simple button used for doorbell More information
Highly Electric Z15G1704Switch Roller limit switches (quantity = 3) More information

Gateway Selection

Factors in selecting the gateway to be used in the product version of the smart home included the following:

  • Robust compute resources to ensure smooth performance without errors due to bogging down during operation.
  • Ready commercial availability was clearly needed so the project could proceed on schedule. The gateway must also be available in sufficient quantities for the hypothetical productization of the smart-home concept.

Ultimately, the Dell iSeries Wyse 3290 IoT Gateway, specifications of which are summarized in Table 4, was chosen for implementation in the product phase of this project. That gateway provides the needed performance for present and foreseeable functionality, as well as ready availability (potentially in large quantities) for hypothetical commercial distribution of the smart-home product.

The team agreed that continuing to use Intel® IoT Gateway Software Suite (which the prototype was already based on) was a straightforward decision, particularly because the gateway is pre-validated for that OS. Moreover, Intel® NUCs and gateways can both run Intel® IoT Gateway Software Suite, simplifying the process of porting software elements from the prototype to the product version of the smart- home model. Likewise, the other core software components such as the Intel® XDK and libraries used in the prototype were held constant to simplify the transition to the product phase.

Sensor status for the smart home product phase is summarized in Table 5. For each sensor, the "Open" and "Closed" values give the logic level returned, and "Edge Action" indicates what transitions to monitor.

Table 4. Gateway specifications for smart-home product phase

Dell iSeries Wyse* 3290 IoT Gateway
Processor Intel® Celeron® processor N2807 (1 M cache, up to 2.16 GHz)
Memory 4 GB DDR3 RAM 1600 MHz
Networking
  • LAN: 1 x 10/100/1000 BASE-T
  • WLAN: 802.11a/b/g/n/ac
  • PAN: Bluetooth 4.0 Low Energy
Physical Specifications
  • Dimensions: 69mm x 197.5mm x 117mm
  • Weight: 2.34kg

Table 5. Sensor status for smart-home product phase

Sensor Open Closed Edge Action Description
IR 1 0 Both Stop or resume garage door operation
Doorbell 1 0 Falling Trigger doorbell push event
Door 1 0 Both Trigger events for door open/closed
Door Lock 0 1 Both Trigger events for door locked/unlocked
Garage Closed 1 0 Falling Stop garage door, trigger event garage fully closed
Garage Open 1 0 Falling Stop garage door, trigger event garage fully open

System Architecture

The solution topology is illustrated in Figure 4.

Image 4

Figure 4. Smart home solution topology

Phase 5: Evaluating Functionality and Adding Features

Prior to evaluating the smart-home solution, the team installed the hardware and software components into the model, as shown in Figure 5.

Differentiation of Administration and Mobile Applications

Image 5

Figure 5. Smart-home solution installed in model

The project team identified that it would be valuable for the solution to include two separate applications for control and monitoring of the smart- home solution:

  • Client application, for use by system administrators, supports test/debug functionality and provides access to cloud-analytics data.
  • Mobile application, for use by end users, allows control of the doorbell and garage door opener and displays open/closed status of both doors. The team also decided to add status monitoring of the lock on the front door.

Implementing Administration and Mobile Applications for Browsers

Rather than providing multiple versions of a rich-client application for different platforms (or taking on the added complexity of cross-platform rich- client development), the team decided to implement the administration and mobile applications in HTML5 and JavaScript using the Intel XDK IoT Edition. This approach allows for a single version of each application to be consumed by multiple hardware platforms in use by administrators and end users. The key platforms identified by the team include the following:

  • iOS* devices, including iPads* and iPhones*
  • Android* devices, including smartphones and tablets
  • Laptop and desktop PCs running Windows* or Linux

Door Lock Functionality

The team identified that it would be valuable to add functionality to show the locked/unlocked status of the front door, in addition to the open/closed status of the front door and garage door. Therefore, a door lock was added to the specifications of the model given to the fabricator.

Cloud Alerts

The following cloud-based functionality was added:

  • When the garage door opens, a light turns on inside the garage. The light turns off after a specified period when the garage door is closed.
  • If the garage door is left open for a specified period of time, an alert is generated to the user.
  • If the front door is left open or unlocked for a certain period of time, an alert is generated to the user.

Additional Authorization Methods for Entry

The potential exists to integrate an open-ended set of ways for people to identify themselves to the smart-home systems, for access to the front door or garage door. These could potentially range from near field communication (NFC) functionality on a smartphone to biometrics such as thumbprint readers. This extension of functionality has not been implemented, but the modular nature of the smart-home design and availability of additional sensor capacity makes it plausible as a future effort.

Phase 6: Finalizing Design and Releasing to Production

The project team tasked with developing this solution was engineering-centric, and so producing first-rate UIs for the final product was somewhat outside the team’s core competency. Therefore, the team engaged an external resource on a contract basis for that purpose. The UI provider participated in regular team meetings and dedicated meetings with the core software-development team.

Image 6

Figure 6. Smart home administration application UI

During those discussions, the UIs were refined to incorporate additional capabilities and functionality. For example, the team added more robust status indications for the garage door and front door to indicate whether the doors were open, closed, locked, or blocked. The visual appearance of the mobile application was changed to more closely evoke the appearance of a conventional garage door opener.

Administration Application UI

The administration application UI, shown in Figure 6, is designed to operate on a tablet computer and to provide administrative functionality for the smart home, based on cloud data.

The administration application UI incorporates the following primary elements:

  • Menu system contains a Home button to go to the home screen (shown in the figure), an About screen with information about the software, a Setup button that provides hardware-setup details (including placement and connectivity of sensors), and a Log button to access an events log that tracks the most recent instance of each type of event tracked, including the doorbell being rung, the front door being locked, unlocked, opened, or closed, and the garage door being opened, closed, or blocked.
  • Notification panel displays event notifications about the doorbell being rung and changes in the status of the front door (opening, closing, locking, and unlocking) and the garage door (opening, closing, or being blocked). This display is based on data that is exchanged with and saved in the cloud, rather than locally derived data. It displays both the event itself and the sensor that has detected it.
  • Status panel shows the most recent instances of each of the events tracked by the system, including the garage door being opened, closed, or blocked, the front door being opened, closed, locked, or unlocked, and the doorbell ringing. It includes timestamps for each event.
  • Front door view shows the open or closed status of the door, as well as an animated icon to indicate whether the door is locked or unlocked. Visual notification is also provided when the doorbell is rung.
  • Garage door view provides an animated display of the garage door opening, closing, or being blocked by an object as those actions occur. If the door is blocked, the application shows the block visually in the animation and prevents the door from closing.

The administration application also provides pop-up notifications about requested actions that can’t be fulfilled, such as the "The front door is locked. Unlock it first." A similar notification occurs if a user tries to lock the door while it is open.

Mobile Application UI

Image 7

Figure 7. Smart-home mobile application UI

The mobile application UI, shown in Figure 7, is designed to operate on a smartphone, allowing customers to open and close the garage door on the smart home. It also reports on the status of the door, based on the polling of cloud data once per second.

The mobile application UI incorporates the following primary elements:

  • Notification panel shows the open or closed status of the garage door, and the action of the garage door opening or closing using an animation. It also indicates whether the door has been blocked by an obstruction by showing an obstruction within the animation and presenting a "Remove block to continue" dialog box to the user.
  • Open and close buttons allow the user to remotely open and close the garage door. When a button is pressed, the application sends data to the cloud, receives a response from the cloud, and displays the status of the door based on that response. The administration application also responds immediately to actions taken with the mobile application.

Conclusion

A structured process is vital to the efficiency of moving a project such as the smart home described here from the early stages of ideation through prototyping and ultimately to production of a commercial solution. The six-phase approach described here is intended to provide a model that organizations can adapt to the needs of their own projects. By prototyping on low- cost components similar to those used by the maker community, the viability of a project can be discerned early in the project, whilvpne the investment in time and money is limited. For those projects that show promise, feature refinements can be made and the solution can be moved to a production-ready platform based on a commercial gateway and industrial-grade sensors and other components.

This stepwise approach to project development provides a pathway toward commercially viable products that helps limit risk while enabling project teams to innovate freely. This article has been an overview of the IoT Path-to-Product: Smart Home. For the project tutorial, see IoT Path-to-Product: How to Build the Smart Home Prototype.

Visit GitHub for this project's latest code samples and documentation.

Additional Information

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)