Why ML Initiatives Fail in IoT
The Internet of Things (IoT) is a concept of a computing network of physical objects (“things”) that are able to interact with each other or their environment. In general, it’s a group of physical equipment (sensors, actuators, devices, etc.) connected to a gateway directly or with negotiation via special protocols. The gateway communicates with the back-end via HTTP protocol (most common, but not the only possibility). The communication flow is bidirectional – meaning the back-end gets data from “things” and sends responses to actuators that perform specific tasks. An example of such data flow can be described as a light sensor that measures only 300 Lux in the office and sends this data to a gateway via a ZigBee protocol. The gateway sends an HTTP request to a cloud back-end that analyzes this data and detects that this lighting is too low for comfortable working and sends a response to the gateway with a command to switch on a light bulb.
What about edge devices? This can be a sensor device (with the ability to communicate with a network), smartphone, light switch, etc. Such devices can have specific requirements, such as:
- Lower cost. The IoT system involves a lot of physical sensors, actuators, etc (that already costs a lot), and every one of them might get damaged during operations due to harsh environments.
- Low power consuming. In most cases, it’s not possible to connect each of a dozen devices to power sources, so they mostly work from an accumulator. As they are placed in hard-to-reach places, it is important to charge them as little as possible.
- Low power consuming. An IoT system consists of multiple devices, which are mostly placed in hard to reach places that cannot always be connected to a power source. So, It’s important for them to work for as long as possible, to make the system easier to serve.
It’s possible that these devices are able to retranslate data of each other multiple times before the message reaches the gateway (in the case of wide-area systems). Sometimes edge devices are able to accumulate messages and store them for some time.
Physical devices can generate a lot of messages and it’s a problem to transmit this data to a gateway (some nodes and gateways can be inaccessible or busy) so there are a lot of special protocols that implement built-in mechanisms of communication between gateways and devices.
As far as the gateway is concerned, it’s possible for it to precompute the data before sending it to the back-end to reduce an amount of network usage.
Machine Learning Potential in IoT
ML can be applied in a wide range of operations within IoT. Some use case examples include:
- a smart home
- smart lock (recognizes an owner by face, voice, etc.)
- smart security system (detects intruders without reacting on pets or friends, detects if owner is in danger)
- smart butler (chooses an optimal thermal and humidity level, automatically pays utility bills)
- a smart office
- resource management (automatically switches off unused resources)
- smart security
- automated office manager
- a smart city
- smart store
- smart subway
Challenges During ML Integration
From the description of IoT architecture, it’s clear that there is a really sophisticated messaging system that requires a gateway to process messages as fast as possible so they are available for new input. Edge devices are mostly “dumb” and in order to optimize power, sleep a lot. We should also keep in mind that some IoT systems have a requirement of high reliability, so even if an internet connection is unavailable, the system should be able to adequately react. That is why, sometimes, we have a dedicated computing device (this can be a gateway). In most cases, this device is not powerful enough to perform complex logic tasks. It’s also possible to calculate some data in edge devices in some cases.
In the case of a system that should be able to work without an internet connection, it’s hard to build an algorithm that can work both with a weak computing unit and cloud. In the case of a system where we have multiple computing units, we have a problem with distributed computing, which is also hard and increases the load on the network (transfer network device-gateway and device-device), which have bounded throughput. It is also possible to have multiple gateways in the system or even some devices directly connected to a cloud. In such systems, important clouds are able to communicate in multiple channels.
A great basic option for cloud is the Pandio service. For example, there is a messaging system with an ability to write to a specific topic, which can accept a great number of data input, so the gateway will not wait until the cloud processes and returns a response. This solves a problem with a queue on a gateway that can be overflowed. It also increases the throughput of the system, reducing the chance for messages to be missed. Cloud will process the data when it becomes possible (if the input is more than can be processed by available computing resources). Pandio is also able to scale automatically, so the system will be adjusted in every situation. There is also a guarantee of acknowledgment, so the action messages from the cloud will always be transferred to actuators even if the network fails momentarily. This enables you to process input in a different way and communicates with only devices you want, depending on the topic.
IoT systems are really complicated and hard to build. Machine learning opens up doors of opportunity but requires solving some hard problems that generally revolve around infrastructure and algorithms to work with high load. Pandio service can help you build a reliable system with a guarantee of message acknowledgment, and the ability to process huge amounts of data, that are generated by IoT edge devices. It gives you the ability to be flexible when it comes to configuring communication channels.