Gartner predicts that there will be over 20 billion smart devices connected by the end of the year. This demonstrates that IoT is not waiting for anyone. We are already reaching a point where interconnected smart devices offer an unprecedented level of comfort and convenience.
As the IoT market grows, more and more businesses are interested in cashing in on this trend by building smart devices controlled through mobile devices.
However, there are a lot of challenges in designing mobile apps for smart devices. Development agencies and their clients need to be on the same page from the early development phase to make the application functional, secure, and scalable.
Let’s shed some light on five important challenges one has to overcome during the development process.
1. Matching Requirements with UI and UX Design
Before the client and development team establish documentation and start the development process, it’s important to get on the same page by discussing what the app is supposed to do, what devices will be used (including hardware and software), and under what conditions will the devices be used.
These three things are vital to get right from the start as all of them impact UI and UX design. Let’s take a look at an example of smart kitchen appliances. What developers and companies don’t pay enough attention to is how accessible the UI is to users under different circumstances.
Let’s say that a person is cooking and it needs our app to perform a certain task. Since they’re in the middle of cooking, we have to consider that their hands might be wet or greasy. Overly-sensitive touch settings or buttons that are too small could lead to “miss clicking,” triggering the wrong action that the user didn’t have the intention to activate.
That’s why it’s important to consider all conditions under which users interact with the app. Sometimes you might need to adjust the brightness settings, use voice recognition, and so on.
Lastly, the app should have an intuitive UX that guides users through loading data or connecting to the network to finish a certain process. In other words, if the user needs to wait for the device to connect/exchange data with the mobile phone, that action should be represented with an appropriate screen and message.
2. Ensuring Compatibility Between Different Sensors and Networks
Sensors and networks through which they communicate are an integral part of IoT development. A challenging part for many IoT experts is finding the ultimate compatibility between different sensors and different network types.
Nowadays, there are many sensor manufacturers, OEMs, and vendors, which don’t always work under the same regulations and protocols. With that in mind, you may end up in a situation where two devices can’t operate together and exchange valuable data because their sensors aren’t compatible.
Businesses sometimes become aware of this issue late in the production process. While the alternative option is adding external sensors, there are still various hoops you need to jump through to ensure that data can be securely and successfully exchanged through all components of the IoT system.
At the end of the day, it’s much better to double-check these issues early on in the development process to avoid costly surprises later down the line.
3. Controlling How Devices Connect to the Network
The challenge of connectivity and networking remains one of the biggest issues when we talk about connecting different devices to work within a single app. The devices can be connected using one of the classic internet networks (such as LAN, MAN, or WAN) or other types of networks such as Bluetooth or Zigbee.
Choosing the best communication channel is not always as straightforward as we’d like. Why? As the IoT system and its architecture grow, so does the demand for networks and the number of devices connected to it. Sometimes, the devices outweigh the performance and coverage of certain networks, causing issues with data processing and exchange.
If there’s a network issue with the device or within the app itself, the app should have a way to explain to the user what is happening. There should be a clear and visible notification that explains what’s causing the issue and offers suggestions on fixing it (if applicable).
4. Confirming Hardware Compatability
It’s challenging to foresee the system and performance requirements when the app is in the early development stage. Oftentimes, the development teams don’t get exact hardware information as they’re beginning the analysis and development.
This is because, more often than not, the clients themselves do not have the necessary experience or knowledge about hardware demands. After the smoke or stress testing fails, everyone becomes aware of insufficient RAM amount or lacking processing power. The teams then need to decide whether they will beef the hardware to support the app or work day and night to optimize (or remove) certain features.
That is obviously far from ideal. To avoid this costly exercise, we always insist on scheduling one or more discovery workshops before the project takes off to understand the project and its requirements.
Even if you skip out on discovery workshops, it is important to involve the development team in choosing the right hardware from the early stage of development so that they can adjust their design and/or help you (re)define hardware requirements. Designing a mobile app can take a while, and it is significantly less painful to make changes early on.
5. Controlling Dataflow and Consistency
The network chosen should be stable enough to give a consistent data outlook on all devices. For example, certain devices in a smart home collect the data and then represent it on the user’s phone, tablet, smartwatch, etc. A stable and consistent database connection ensures that up-to-date information is displayed across all devices.
Most of the data that smart devices work with these days is unstructured, so it might be difficult to store it in an appropriate SQL format. Additionally, the data is handled based on its volume, velocity, and variety, so you have to ensure a good data flow through different layers of the smart system’s architecture.
When many devices operate with a lot of data, it’s important to reduce and eliminate redundancy and complexity of data to make it more readable and secure for the end-user. In an era where data outnumbers the devices that process it by a great margin, it’s important to deliver usability and value to end-users. Smart apps should be robust, intuitive, and stable enough to handle human-driven errors.