It probably has not escaped your notice that there has been a lot of chatter lately about the Internet of Things (IoT). In case you’ve missed it: IoT is the notion that pretty much everything—from refrigerators, automobiles, and industrial machines to environmental sensors, surveillance cameras, and baby monitors can be equipped with circuitry that enables them to connect to the Internet, providing information continuously or on demand.
“OK,” you say. “I can see how an Internet-connected rain gauge would be useful, so I can find out how much it’s been raining without actually going outside, but why a refrigerator?” Consider this: Imagine that your refrigerator is outfitted with sensors that can tell what items are running low or are about to expire. Time to restock! But instead of merely texting you, “Pick up some milk on the way home,” it checks your online meal plan—which is determined, in part, by data from your Internet-connected fitness monitor—puts together a shopping list, and orders everything from the grocery store, which employs an Internet-connected robot to load an Internet-connected autonomous delivery vehicle, which brings your groceries right to your door. And if your fitness monitor says you haven’t exercised enough this week, that carton of cookie dough ice cream won’t be there.
Sounds far-fetched? It is, but not by much. Many Internet-connected devices are already on the market (and some have already been hacked, but that’s a story for another time). In any case, every device in the IoT universe will need to be accessed, managed, configured, and manipulated at some point by a human being. Doing so will require a more familiar Internet-connected device, such as your laptop or smartphone. And this, commonly, will mean new web design and development techniques.
Design Considerations for IoT Interaction
So what kinds of design considerations will be needed to enable users to interact with IoT devices?
- Back End: To enable users to interact with IoT devices, a way to establish communications among them must be established. Because each device has different capabilities, commands, and data it can transmit and receive, exactly how to communicate is going to vary from one device to another. Fortunately, node.js has emerged as a common framework for communicating with IoT devices. And each device should have a well-defined and documented set of properties and methods.
- User Interface: A web-based user interface for an IoT application needs to be clean, intuitive, and fast. (More on this later). All of the standard usability best practices will be brought to bear when designing the interface, including meaningful feedback, a logical flow, and good user assistance. And don’t forget that many—perhaps most—usage situations will involve mobile devices.
- Speed: Unlike traditional websites, where requests go to a web server, which sends data back, there is another communications “leg” involved between the web server and the IoT device. This potentially means additional latency and the user’s perception of slow response. So design strategies for slow connections should be adopted.
- Security and Privacy: The downside of the IoT is that it presents more opportunities for hackers. If you can remotely unlock your Internet-connected front door (you know, to let the grocery robot in to restock your refrigerator), a hacker could potentially do the same thing and help himself to the contents of your home. Part of the security and privacy responsibility is on the device designers, but a third-party web designer needs to make security a primary design consideration.
- Power Management: Many IoT devices will be battery-powered wireless devices, and excessive communications back and forth will drain the battery prematurely. Communications need to be designed to minimize power usage.
Testing an IoT website is quite a bit more complicated than it is for a traditional website. Now you have to consider cases such as:
- Will network latency cause problems in controlling an IoT device?
- What happens if a network connection (either between user and web server or between web server and device) is slow or is interrupted in the middle of a session?
- Does the device actually do what the user interface tells it to do?
- Is the power management strategy appropriate?
The advent of the IoT presents many opportunities to create new, innovative, and useful applications to make our lives easier. Web developers should be prepared for this new world because users will rightfully expect to be able to use these new devices reliably and without fuss. Your Internet-connected refrigerator is on its way—get ready!