The AndPlus Guide to IoT Development

With the advancements in computing power and wireless internet connectivity, the Internet of Things (IoT) has grown to include billions of connected devices that are collecting and sharing data without human intervention. 

a buyer holding mobile phone over a payment scanner

From light bulbs to jet engines, IoT is transforming the world around us making devices smarter and more responsive – connecting our world in ways that were unimaginable only a decade ago. As a result, companies of all sizes and across all industries are incorporating IoT capabilities in their operations and their products. This guide provides information regarding the IoT product development process and the important considerations to ensure a successful project:

  • What is IoT and why is it important?
  • What are the key considerations to creating IoT products?
  • What are the development steps to creating successful IoT solutions?
Key Takeaways
  • Over the next 5 years (2025), the number of IoT devices in use is projected to more than double - approaching 42 billion
  • IoT applications involve both hardware and developing an IoT system is more complex than developing a PC, mobile, or web application
  • Due to IoT development complexities, experience in IoT project development can dramatically impact project success

The Basics of IoT

The term “Internet of Things” (IoT) has come into common usage today, but what does it really mean?

To understand IoT, it’s helpful to know the meaning of the traditional, “non-thing” internet. The network known as “the Internet” connected mainframes and servers. Later, it connected microcomputers such as desktop PCs. Each computer, or “node,” had a unique address that distinguished it from other computers on the network. As computing technology advanced, it became possible to pack more powerful computing resources into smaller packages.

These days, almost any electronic device can be made with enough computing power to communicate with other devices over the same internet that traditional computers have used. These “non-computer” computing devices are the “things” that make up the Internet of Things. Each device can be placed on the network and use standard TCP/IP protocols to communicate with other devices and computers that are also connected to the network. In its simplest form, an IoT system consists of several components working together:

  • Devices that can include a multitude of components including sensors, actuators, cameras, input/output components, and a power source
  • A software application that collects data from, or sends commands to, the IoT devices
  • Communications that take place between the devices and the application
With some basic IoT information out of the way, the remained of this article provides an essential understanding of the IoT development process and the important considerations to keep in mind when pursuing an IoT system development project.

IoT Use and Projected Growth

IoT systems have seen explosive growth in the last few years and this trend is predicted to continue. In fact, technology analyst IDC estimates that by 2025, there will be 41.6 billion connected IoT devices – up from an estimated 20.4 billion devices (Gartner) in 2020. In addition, Security Today magazine reported that in 2020:
 
  • 93% of enterprises will adopt IoT technology
  • 80% of industrial manufacturing companies will have adopted IoT technology
  • 90% of cars will be connected to the Web through IoT technology

Nest 3-2
 In particular, an IoT flavor known as the “industrial IoT" has targeted improving automation, data collection, and visibility in commercial settings such as factories and warehouses. But many other industries are adopting IoT technology as well:
  • Agriculture: IoT-enabled sensor devices can monitor soil quality and moisture as well as plant health and readiness for harvest.
  • Smart Home: Smart home devices connect kitchen appliances, security systems, lighting, entertainment and more and are automating many aspects of life around the house.
  • Healthcare: Diagnostic devices, medical monitors, and other devices are becoming more common in clinical settings.
  • Building Automation: Commercial monitoring of HVAC systems, power consumption, leak detection, security systems are being deployed across all industries and geographies.
  • Transportation: Cars, trains, jet airplanes, and mass transportation devices are connected for a multitude of reasons that range from improved customer experience to safety. 
The growth of IoT doesn’t just create new features and capabilities, it also drives dramatic and positive impacts on operating cost, user experience, application functionality, business intelligence, and more. As a result, businesses of all sizes and all industry segments are deploying IoT technologies in their operations and in their product offerings.
 

Device Design Considerations

Because IoT applications involve both hardware and software, developing an IoT system is more complex than developing a PC, mobile, or web application. Things get even trickier when you’re using custom IoT devices as opposed to those available “off the shelf.” Custom devices require more thorough testing, both in isolation and when integrated with the rest of the IoT system you’re developing.
 
Getting Started – Project Scope and System Requirements
 
The first steps in the IoT system development journey are no different from those of any other development project – define the project scope and system requirements:
 
  • Define the scope: What problem are you trying to solve? Are you certain an IoT system is the best way to solve it?

    pair programming at andplusAt this stage, you want to define clear boundaries around the scope of your project. You need the organizational discipline to exclude anything outside that scope. Scope creep is your enemy, because its negative effects on budgets and timelines can be more pronounced in IoT projects than in "ordinary" software development projects. 
  • Identify the system requirements: What is the system supposed to do? These are high-level requirements that are informed by the business problem being solved. They are not specific to any technology. In fact, they should make no reference to hardware or software components.

    Each system requirement should be evaluated with reference to the project scope; if an identified system requirement falls outside the scope, it shouldn’t be part of the project. At most, it should be archived for reference in a future enhancement in the product roadmap, and it can be considered when designing the system architecture for easier implementation later.
 
At this point, it’s time to rough out the detailed requirements for both the hardware and the software and to define the system architecture.

Developing Device Requirements

The software requirements definition process at AndPlus is explained at length elsewhere, so let’s focus on the hardware components.
 
The specific requirements will depend on the type of device. Think about the intended uses of the device and the physical characteristics it must possess to achieve the device (and application) purposes.
 
Here are some things to think about when developing the requirements for an IoT device that detects and measures physical properties:
 
  • Sensitivity: What’s the minimum amount of whatever it is you are sensing that should trigger a response from the device?
  • Specificity: This attribute is used mainly for sensors of chemical reagents. What specific chemical are you looking for? Is it found in combination with other chemicals?

    If an available sensor responds to four different chemicals, but three of them would never be found in your system, this low specificity should be acceptable. If two or more might be found in your system, the sensor won’t be able to distinguish one from the other. Again, this might be acceptable according to the application requirements; otherwise, you need a sensor with better specificity.
  • Accuracy: How close is the value the sensor reports to the actual value? What tolerance for accuracy errors does your application have?
  • Precision (or resolution): What is the minimum change in measurement the device should be able to resolve? For example, does a chemical sensor need to measure chemical concentration in parts per million, or parts per billion?
  • Response: How quickly does the sensor need to report that it sensed something after that condition is found in the system?

Specification Considerations

 In addition to requirements that relate to the device purpose, designers must consider many other device characteristics in order to form a complete specification for the device.
 
While there are likely many consideration categories that can be included, these examples are often common to most/all IoT development projects:
  • Physical size and shape: Will the device be installed in locations that constrain its shape and size?
  • Environment: In what conditions will the sensor be deployed? Indoors, outdoors, laboratory, factory, warehouse, vehicle? Does the sensor need to withstand weather, harsh chemical environments, extreme temperatures or pressures, high-vibration environments, strong electric or magnetic fields or radiation?
  • Power: How much power does each device need to operate? Will onboard batteries be sufficient, or will the device require an external power source? Will the devices be deployed close enough to electrical outlets or some other wired power distribution? If not, would batteries be easy to change or recharge? Would the devices be installed in lighted locations, making it practical to power them with solar cells?
  • Communications: Will the devices have direct ethernet or other wired communications? Will they need to communicate using wireless technology, such as Wi-Fi, Bluetooth, or LTE? What communication protocols will be needed? What network addressing scheme will be used (IPv4 or IPv6)?
  • Offline behavior: What should happen if the device can’t communicate? Should data be stored on the device until connectivity is re-established, or is it acceptable to discard some or all of that data?

The “Big Ones”: Maintainability and Security

Regardless of its purpose and physical design, all IoT devices must have two characteristics baked in:
 
  • Maintainability, or the ability to keep the device working as designed
  • Security, or protection against hacking
Man holding tablet deviceFar too many network-connected devices in use today were designed with poor or nonexistent security, making them vulnerable to eavesdropping, spoofing, malware, and other cyberattacks. In many cases the firmware on these devices cannot be easily updated (if at all), making it difficult or impossible to patch the security vulnerabilities.
 
Therefore, IoT devices must be designed with security from the ground up, and some way of updating the firmware must be built in. In the best-case scenario, the device would be able to update itself over the network, without requiring human intervention.
 
Another aspect of maintainability involves device calibration. Most sensor devices must be calibrated before deployment to make sure they provide accurate measurements, and they must be recalibrated on a regular schedule. Devices requiring calibration should be designed to make the process as easy as possible.

Device Software Architecture

The IoT device hardware specifications will, in turn, inform the requirements for the software running on the device. Depending on the scope of the device capabilities, the device software might consist of one firmware program. Or it might involve several programs and an operating system. At a minimum, any IoT device will need software to operate its sensors, actuators, and other hardware components as well as software to manage its communications with the other parts of the system.

To make life easier for the application developers, an application programming interface (API) should be developed for the device. The API provides “hooks” that simplify the programming needed to fetch data from the device or issue commands to it.

System Architecture Design Considerations

The IoT device itself is just one part of an IoT system. To build a complete IoT-based system, IoT devices must be integrated with application software.

An important part of this integration is determining how the data will get from the devices to the application (and vice versa). If your system involves a large number of devices and all of them transmit data to the application all the time, your local network might not be able to handle the load. The situation can be even worse if your application is hosted on a cloud server; your internet bandwidth could be saturated with IoT device traffic.

iot architecture for digital transformationEdge computing is a common approach. In an edge computing environment, the IoT devices communicate with a dedicated device (the “edge computer”) that, in the network topology, is as close as possible to the devices. The edge computer summarizes the incoming data and sends the summary to the application.

This design reduces traffic flowing across the local network or to the cloud. Depending on the number of IoT devices in the system, you might need more than one edge computer.

Wireless IoT devices have their own issues. They might not have enough power to transmit data over long distances, such as outdoor locations where it is not practical to deploy Wi-Fi access points. In this case, a wireless sensor network (WSN) may be the answer. In this architecture, a distant device transmits its data to a closer device, which relays the data to the access point.

WSNs have the added benefit of being self-organizing; they collectively determine which devices act as relay nodes. This feature is important if the locations of the devices are not known in advance or if the devices will move around. Self-organization also adds cost and complexity to the system.

System Prototyping & Testing

Development of the hardware and software can proceed in parallel, but not in isolation. The hardware, firmware, and application development teams must coordinate to ensure they stay on the same page with regard to inputs, outputs, timing, and protocols.

illustration of NASA's Mars Orbiter above the planet MarsRemember the NASA Mars orbiter that crashed because one team was working in metric units and another in English units? Collaborative hardware and software development will avoid that kind of situation.

Prototyping
Prototyping can be a tricky exercise on the hardware side. Because the IoT device prototypes require physical fabrication, there is no practical method of “rapid prototyping” for the hardware. Still, the application developers can do much of their prototyping without the IoT devices.

Early application prototypes will likely be low fidelity, to give stakeholders a general idea of the user interface and application features. As development proceeds, prototypes can be produced with higher fidelity, providing closer approximations of the “real thing” to obtain finer-grained feedback from end users.

Because the application developers may be ready to start testing before the hardware team has a device for them to test with, it’s probable the software team will need to simulate communications with the hardware for some period of time. In a similar vein, the hardware will need to undergo extensive testing on its own to ensure the devices meet all the hardware specifications.

Testing
At some point before launch, the hardware and software must be tested together. This process is known as integration testing. The teams verify the hardware and software can communicate as designed and all communications between the hardware and application meet expectations.

Finally, the entire system must be tested under real-life conditions to ensure the system meets the stated requirements.

With proper project management and coordination between teams, there should be no surprises in the last stage of testing. Hardware issues can be expensive to fix, so any bugs should have been discovered and resolved much earlier in the process.

 

capabilities-hero_final

The Future of IoT

Where to Go From Here

IoT systems are anticipated to see wide adoption in many industries, driven by the promise of rich data that IoT devices can provide, as well as the opportunities for automation that can be realized by IoT-based systems. As a result, many billions of IoT devices are expected to be deployed in the next few years.

You now know the development of IoT applications is far more complex than that of traditional software applications. If you don’t have experience with hardware integration projects, you could be in for a rough ride and it would be wise to consider experienced support.

AndPlus has the experience and expertise to guide your IoT development project through this uncharted territory.

We have helped many clients with hardware IoT integration projects and understand the best approaches and the pitfalls to avoid. If you have a great idea for an IoT-based system for your organization’s digital transformation, we’re here to help.


About AndPlus

AndPlus is a digital technology consulting and development firm that helps clients accelerate digital transformation by closing the gap between strategy and execution. Fusing deep technical and business expertise with a custom Agile development process, we help our clients rapidly implement digital transformation strategies that achieve optimal results with less risk.

For more than a decade, AndPlus strategists, builders, innovators, engineers, and designers have pushed the boundaries of mobile, web, IoT, firmware, and advanced technologies to create or improve processes and products that deliver measurable value and exceptional user experiences.


Need a quick crash-course in the 'MVP' methodology?

 

A Minimum Viable Product (MVP) has only those features needed to validate its continued development. Its primary goal is to obtain this insight at a lower cost than that needed to develop a product with more features. 

 

Feature Prioritization

Our process begins by identifying the primary goal that will address both our client's business goals and the end user's goals. We select the methods that the MVP will use to accomplish these goals. Our design team then defines the minimum scope of work and use this list of features to map the ideal user journey.

 

Early product prototypes are often developed at this stage in order to illustrate concepts and ensure that business objectives and user experiences are aligned and optimized. 

 

Development

Once the user journey is mapped, the code starts flowing. Early prototypes/wireframes are brought to life by our engineering team. We use an Agile Scrum process that is custom tailored to our industry. And that's the kicker. We don't just utilize this same Agile framework straight from the textbook, we optimize the development process based upon more than a decade of development experience gained from hundreds of digital development projects. 

 

Output

The fun part! Our sprints run in 2-week increments. You get actual working builds of your product every two weeks. These builds are tested, and iterated upon as the project moves forward. We pride ourselves on iterating these builds to perfection by launch day.

 

Our deep expertise and custom Agile development process enable AndPlus to iterate quickly, provide transparency, and deliver on time and on budget — helping our clients get to market faster.

 
Download our 100 Day MVP eBook
 

a pair of glasses on AndPlus MVP eBook

See more resources

andplus custom mobile, web and iot applications

A quick hello

Who is AndPlus

AndPlus is a digital transformation agency that applies technologies to create or improve experiences, processes, and products. For more than a decade, our teams of builders, innovators, engineers, and designers have worked the boundaries of mobile, web, IoT, firmware, and advanced technologies including data warehouse, machine learning, AI, and big data.

Put simply, we’re here to guide and assist your organization in its digital transformation journey by delivering the best strategies, expertise, processes, and technology.

Give us a call and let’s get started.

 

LET'S TALK

Get in touch

LET’S BUILD SOMETHING AWESOME. TOGETHER.