What I learned designing for IoT
1) Everything is not meant to be connected to the Internet
What I learned designing for IoT

1) Everything is not meant to be connected to the Internet
Devices should not be connected to the Internet for the sake of doing it. If connecting it to the internet doesn’t enhance the experience, then don’t do it.

http://connectedtoothbrush.com/
2) Understand the IoT stack completely for better decision making
Look beyond the screens understand all the layers of the IoT technology stack.
Device Hardware
Devices constitute the “things” in the Internet of Things. The main goal of our device is to collect data in the IoT. Knowing what kind of data we are collecting helps us in better decision making.

Raspberry Pi 3 Board
Device Software
Device software is the part that turns a the device hardware into a “smart device”. The device software layer can be divided into two categories Operating System and Applications. Application layers helps us to define the functionality of the system for example data capturing and data transfer to cloud, analytics, local control, etc.

Note:
Though most of the devices automatically adapt to our context or controlled by applications on mobile or web, we might still want to interact with IoT devices occasionally. Most devices need some kind of On Device UI in case users don’t have access to the application when needed. On Device UI may be limited to few buttons, a tiny display , LEDs or an audio output that indicate different states.
Communications
This layer of IoT stack deals with the communication between the device and the rest of the layers. It’s important to understand this layer as it may increase the operational cost of the product. We should decide what data’s do we need and at what time do we need it. As the experience and success of the product highly depends on it.
Cloud Platform
The data alone doesn't’ makes our product valuable, it’s the analytics the ability to process data and find patterns makes our product smart. Cloud platform helps us to manage the data, perform analytics and share them to other services and layers.
Cloud Applications
Cloud applications are the one where our users will see and interact with they are mostly web and mobile based applications. Few products have On device interfaces. But users are most likely to use a cloud application as their main point of interaction with our product as it gives them ability to connect with the product anytime and anywhere.
Note: When designing for our end-user applications, it is very important to understand who our user is and what their primary goal is for using your product.We should also be aware of the context they might use the application.The industrial IoT and Consumer IoT design approach varies significantly.
3) No one has internet access all the time
When designing for IoT, don’t assume that users have internet connectivity all the time. Always start with a use case to design for no internet connectivity, and then list how much functionality can be done locally without the need to access the internet. A device should not become dumb when it looses the connectivity. It should be at least able work with the data available to an extend.

4) IoT is still evolving
IoT as an industry is still evolving, technology emerges, companies get bought out so the early adopters are often left in cold. Modularising the design can open possibilities for upgrades, ability to easily upgrade a module without affecting the rest of the device. Helps users to keep up with the evolving IoT.
5) Understand the DIKW model
In the era of Internet of Things, all our devices generate tons of data every day. According to a report from Cisco, The Internet of Things will generate 400 zettabytes (ZB) of data a year by 2018. A zettabyte is a trillion gigabytes (1 ZB = 10,00,00,00,00,000 GB).

DIKW pyramid
Turning these data into useful information and then moving up the DIKW pyramid is where the success lies for the IoT products.
Finding Solutions out of Data in the Era of Information Overload
6) Understand the context
Understanding the context is very important while designing IoT products, the use cases vary with context of use of the product. And many products might exist in the same environment communicating between them, even they might be part of the same experience. So understanding the context of usage is vital.
Finally it’s about connecting people and not just about connecting devices, letting the IoT products evolve along with users will lead to a successful journey leveraging what users already know.

https://nest.com/uk/thermostats/nest-learning-thermostat/overview/