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.
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?
- 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
IoT Use and Projected Growth
- 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
- 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.
Device Design Considerations
- Define the scope: What problem are you trying to solve? Are you certain an IoT system is the best way to solve it?
At 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.
Developing Device Requirements
- 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?
- 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
- Maintainability, or the ability to keep the device working as designed
- Security, or protection against hacking
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.
Edge 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.
Remember 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 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.
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.
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.
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.
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.
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.
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.