How is it advertised?
IoT stands for Internet of Things, and is said to be a next-generation technology that connects everything we have into a unified system. It often comes hand in hand with all the “smart” things that we can buy — from lighting systems to home appliances to sensors to industrial equipment. All of those things connect to a software system, creating an interconnected network of things serving us, humans.
What is it from technical perspective?
In reality, it all comes down to a distributed network of devices and services running software or firmware that is not much different from non-IoT projects.
IoT consists of two ideas: Internet and Things. So, basically, it covers everything that can connect to the Internet. Some would argue that it should not be directly operated by humans, which typically poses more requirements for reliability, but it is not the main issue here. It feels like the division is sometimes blurry, and there are arguments about whether something is or is not an IoT device.
In most cases, if the device can connect to the Internet, you are close to being able to call it IoT.
What is a thing?
What does a device need to be an IoT Thing?
Internet connectivity is an obvious minimum. In practice, it means that the device needs to support the TCP/IP stack.
On top of that, it needs to implement security protocols. It is no longer optional, and the most common way of doing it is using TLS. TLS requires some cryptography functions to establish secure connections to servers on the Internet.
With that, the device can securely connect to the Internet but does not do anything special. So the last thing we need is a specialized application that actually has some functions. It may be as simple as measuring something or relaying data. Since the device communicates over the Internet, we need an application protocol, which typically involves MQTT, HTTP, or CoAP.
What does it mean for embedded Linux?
With Linux, we get most of the things pretty much out of the box. Internet connectivity is built into the kernel, standard libraries provide security and TLS, and we can write an application in any language that compiles for a given platform.
So, technically, Embedded Linux and IoT are typically very similar concepts.
Do we even need Linux for IoT?
No. Some microcontrollers (that don’t run Linux) support Internet connectivity, often using wireless protocols. Development for microcontrollers is not as simple as writing applications for Linux, but it is not impossible. A lot of effort is put into making it easier — libraries and frameworks are developed, and things will probably get much easier in the future.
What is on the other side?
So far, we have discussed what IoT devices are and that they need a secure connection to some server on the Internet.
So, what exactly is this server?
One of the selling points for IoT products is “cloud connectivity.” It is a rather vague statement, as “cloud” may mean many things. And it is no different when it comes to IoT.
In short, there has to be some backend service that provides connection to the “thing” devices. What happens next depends on the application. Some products, for example, may offer a phone app that manages devices, others may work as a plugin to yet another system.
