Thoughts on communication protocol for Internet of Things devices

By: Charles Ikem

Internet of Things (IoT) devices receive data using established protocols. To enable communication, understanding and activation of instructions and commands means that many IoT devices will have to empower users to control and manipulate.

There are approaches to controlling IoT devices such as direct manipulation, automation and autonomous mode. One that is becoming rather popular is the idea of ‘users as programmers’, with developments popular in gaming devices and wellness apps. The ideology is to give users the agency to act and take control of the device of their device, device behaviour and direct the actions in their own terms rather than autonomously. Many IoT devices already have this capacity of enabling users go through the cognitive process of unboxing, pairing and synchronising devices.

Controlling a door knob via a single custom app is a simple example of IoT. But things can become complex as multiple devices are added. The devices will need to inter-operate with other third party devices, services and applications. You can’t have an app for all the devices in your home is it?

Consider a connected home where you have a network of smart lamps, a CCTV camera and motion sensor, Nest door locks and thermostats and WiFi router. How do you configure and control network of devices, users and services? Ensuring that code run in the right places, users are assigned the right permissions, how and where to store data, how do you control the devices? Locally or remotely? How do you use the data to improve the services. The framework will be to map the approaches that better connect the users, services and devices.

controlling smart devices

And users will have to decide how they use the devices according to their preferences. Developing a logical framework for enabling users to control single and multiple devices using logical design languages and programming notations is at the higher level but also creating conceptual communication packages such as leaflets and product demonstrations to enable users navigate the product and build their own mental model of the product.

To elaborate on the approaches to controlling devices we have:

1) With user in full control:  Create intuitive interfaces for users to control the devices. Control interfaces can either be via embedded devices with direct manipulation or connecting the devices via internet and controlled using a mobile/web app. So the user can actually control the device remotely or locally depending on the usage/ scenario.

2) Automation: Users configure the system functionality to run automatically- at a given time/place. E.g.: Setting the thermostat to come on when the temperature is below a certain degree, at night by 9pm when the user is at home. Most often via a mobile/web app.

3) Autonomous: Hand over control to intelligent/smart systems to act independently on behalf of users. For instance: The water sprinkler learns that the temp is 30 degrees outside and because it has been 2 weeks since the garden was watered. The water hoses are activated and because the water level is low, limits the use by just 500cl and send a message to the user when this is done.

Some common interconnections and multi-device issues to be aware of: Where you have several identical devices such as smart lamps, which device is broadcasting which information? Example: FTTT can check your Gmail and notify you when you have an important message from a client by making changes in the colour of the light bulb. So each client can have different colours or a case where your apple watch taps your wrist for important calendar appointments.

There is need for users to keep track of what the devices are doing, which or what software is controlling what and what data is generated.

Example: Assigning permissions and authorizations at different levels in your home. You can give permission to your kids to access the playlist in the Sonos speaker and entertainment system, and specific door locks but may not give access to the CCTV camera.

To control devices you need to understand some programming languages as well as specific notations applicable to the domain you are working/using in order to design this sort of logic into the system. The act of programming devices involves both users as well as professional developers.

A user-engaged in programming must learn a form of notation in order to create instructions for the system, where programming is configuring a system to do something in another place or at another time that involves a mindset and set of complex cognitive tasks.

There are two varying notions on programming devices: User programming, where users engage in configuring the device to perform while system designers/developers: performs the coding tasks needed to make the system work.

The software engineering process is a typical programming process for professional system designers and developers. Setting up IoT devices is like programming- so users can also be programmers. By following the typical user programming process of framing the problem, configuring the tasks (mostly coding) and testing.

Another angle to controlling devices from a front-end perspective is using Notations. Examples of programming notations are IFTTT and Home automation rules. IFTTT (If This Then That) is a sample trigger-action command service. E.g.; If my amazon package arrives at my door, please send me a text message.

To implement an API for your service according to the IFTTT Service Protocol see: https://platform.ifttt.com/docs/api_reference

To successfully implement device controls and communication approaches you need to understand programming languages as well as the specific notations applicable to the domain you are working on. Logical design languages help in achieving this. Deciding on the control approach depends on the use case, product strategy and functionality.

For smart home vendors, access to data, knowledge and using this data to improve the user experience is quite important. Think Amazon Alexa/Dash, Google Home. Taking a user perspective to designing your system is crucial to aligning the user goals to your product strategy and increases the chances of your product going mainstream and even usage in scenarios never thought of before.

All information/views/opinions expressed in this article are that of the author. This Website may or may not agree with the same.


Charles Ikem is a service designer with expertise in UI/UX, interaction design, data science and digital transformation. Charles has worked for CELT, UK, Centre for Technology Entrepreneurship in Italy as well as in South Africa and Nigeria. He holds a Master’s Degree in Design Management from Birmingham City University, UK and a PhD from University of Padova, Italy where he worked on service design applications to Internet of Things. Charles is currently working as an independent consultant for M4ID based in Helsinki.

 

Leave a Reply

Click here to opt out of Google Analytics